Setlocale and wchar_t C functions...

Steve Lime Steve.Lime at DNR.STATE.MN.US
Fri Jun 22 11:21:50 EDT 2007


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 



More information about the mapserver-dev mailing list