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