Setlocale and wchar_t C functions...

Daniel Morissette dmorissette at MAPGEARS.COM
Fri Jun 22 16:01:19 EDT 2007


Um... based on what I've read in the past I think setlocale() is a bad idea.

When I last looked at bug 1921 I thought we could deal with the issue 
using libiconv only, since, if I remember correctly, the iconv() 
function processes one character at a time so I thought we could use it 
to iterate over all mbyte characters in the string. I could try to find 
some time to have another look (early next week?) before we go the scary 
route of setting global locales and stuff like that.

Daniel



Steve Lime wrote:
> Hi all: I'm working to resolve bug 1921 with deals with curved labels and multibyte character sets. The current label path
> code doesn't handle multibyte character sets. Fortunately standard C (on Linux and MacOS anyway) have some functions
> to deal with the problem. For example mbstowcs converts from a multibyte string to a wide character string. The behavior
> of those functions depend on the locale. Unless you are in a local with multibyte characters those functions don't work
> with multibyte chars and assume single byte chars. Found that out trying to draw Chinese characters with the default US-EN 
> locale. If I set the local to one with multibyte characters then I could debug.
> 
> A couple of questions then:
> 
>   - what would folks think about adding a LOCALE parameter to the main mapObj? We could to a setlocale(LC_ALL, msyytext)
> immediately. If not set, then whatever the system has set takes over.
> 
>   - as I understand it setlocale has a global effect so perhaps there might be some down stream side effects, although I can't
> think what they might be. I suppose for long running processes there could be issues. I can see where a company might want
> to provide maps in different languages from the same server.
> 
>   - are the wide character functions (stdlib.h) available on all platforms?
> 
> Steve 


-- 
Daniel Morissette
http://www.mapgears.com/



More information about the mapserver-dev mailing list