Thorsten Glaser wrote:
> setlocale() is a nop and thus never has side effects.
> 
> If an application wants to use iso-8859-1, it can do that, because the
> encoding of the system is OPTU-8:
> 
> möp (latin1) = 0x6D 0xF6 0x70
> ↓ convert to wchar_t ↓
> 0x006D 0xEFF6 0x0070
> ↓ convert to char ↓
> 0x6D 0xF6 0x70

This cannot work in the way users expect.

1) The conversion from ISO-8859-1 to wchar_t may misinterpret some sequences
   of characters (namely those that happen to look like valid UTF-8,
   such as 0x31 0xD7 0xBD ("1×½").

2) The <ctype.h> and <wctype.h> functions cannot work. For example, in
   ISO-8859-1 encoding, toupper(0xF6) = 0xD6. Whereas in ISO-8859-5,
   toupper(0xF6) = 0xA6. You cannot have both in the same locale.

In summary, your system does NOT support ISO-8859-* locales, and therefore
a minimally POSIX compliant setlocale() function ought to return NULL when
asked to set such a locale.

Bruno

Reply via email to