Hmm well the KOI8 tests unsurprisingly produce random results on non- KOI8 input. It's pure chance you didn't get EILSEQ.

What errno did you get for the C locale test? On which input character? Perhaps it's sihnalljng EILSEQ for every byte >0x80 ? That seems broken to me but perhaps not to a glibc pedant out there.

--
Greg


On 2 Mar 2009, at 19:17, Teodor Sigaev <teo...@sigaev.ru> wrote:

Say what? What OSes is that?
See attached test program. It tries to convert multibyte russian word in UTF8 to wide char with C, ru_RU-KOI8-R and ru_RU.UTF-8 locales. The word contains 6 letters.

FreeBSD 7.2 (short output):
========C==========
mbstowcs returns 12
========ru_RU.KOI8-R==========
mbstowcs returns 12
========ru_RU.UTF-8==========
mbstowcs returns 6

Linux 2.6.23 libc 2.5 (short output):
========C==========
mbstowcs returns -1
========ru_RU.KOI8-R==========
mbstowcs returns 12
========ru_RU.UTF-8==========
mbstowcs returns 6


The program also prints test of iswalpha:
Linux 2.6.23 libc 2.5 (full output):
========C==========
mbstowcs returns -1
ERROR
========ru_RU.KOI8-R==========
mbstowcs returns 12
       0-th chacter is alpha
       1-th chacter is NOT alpha
       2-th chacter is alpha
       3-th chacter is NOT alpha
       4-th chacter is alpha
       5-th chacter is NOT alpha
       6-th chacter is alpha
       7-th chacter is NOT alpha
       8-th chacter is alpha
       9-th chacter is NOT alpha
       10-th chacter is alpha
       11-th chacter is NOT alpha
========ru_RU.UTF-8==========
mbstowcs returns 6
       0-th chacter is alpha
       1-th chacter is alpha
       2-th chacter is alpha
       3-th chacter is alpha
       4-th chacter is alpha
       5-th chacter is alpha
<t.c.gz>

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to