Обсуждение: UNIX vs Windows LC CTYPE and UPPER mu

Поиск
Список
Период
Сортировка

UNIX vs Windows LC CTYPE and UPPER mu

От
service prodat
Дата:
Hello,

first: i hope im right here in this mailing list.

My problem:

We have several Postgre servers 9.0.4, one on Windows Server 2008 R2 and
others on different UNIX/Linux systems.
Windows: LC_CTYPE = 'German, Germany'
UNIX: LC_CTYPE='de_DE.UTF-8'
(so LC_COLLATE is too)

on both systems
ENCODING = 'UTF8'

Now the function UPPER('µ') works right on Windows, giving me 'µ'
(unicode = 181 respectivly U+00B5).
On Unix I get a char like M (unicode = 924 respectivlyU+039C), the GREEK
CAPITAL LETTER MU
But we are not in Greek.

Is this a Unix based problem with a wrong local setup (we dont think so,
servers local working on other german letters like ä, ö, ü and UPPER too),
or a Unix local problem in principle,
or a wrong postgre server setup,
or a postgre bug?

Or is this a feature, not a bug.

We dont know where to search or where to fix something.

Thank you for concerning,
Dominik

Re: UNIX vs Windows LC CTYPE and UPPER mu

От
"Albe Laurenz"
Дата:
service prodat wrote:
> first: i hope im right here in this mailing list.

Yes.

> My problem:
>
> We have several Postgre servers 9.0.4, one on Windows Server 2008 R2 and
> others on different UNIX/Linux systems.
> Windows: LC_CTYPE = 'German, Germany'
> UNIX: LC_CTYPE='de_DE.UTF-8'
> (so LC_COLLATE is too)
>
> on both systems
> ENCODING = 'UTF8'
>
> Now the function UPPER('µ') works right on Windows, giving me 'µ'
> (unicode = 181 respectivly U+00B5).
> On Unix I get a char like M (unicode = 924 respectivlyU+039C), the GREEK
> CAPITAL LETTER MU
> But we are not in Greek.
>
> Is this a Unix based problem with a wrong local setup (we dont think so,
> servers local working on other german letters like ä, ö, ü and UPPER too),
> or a Unix local problem in principle,
> or a wrong postgre server setup,
> or a postgre bug?
>
> Or is this a feature, not a bug.
>
> We dont know where to search or where to fix something.

PostgreSQL uses the operating system's towupper(3) function to
convert letters to upper case.

After looking at the UNICODE character list I tend to agree that
code point 0xB5 (MICRO SIGN) should not be converted to
0x39C (GREEK CAPITAL LETTER MU).  There's 0x3BC for GREEK SMALL LETTER MU.

Bug or not, the operating systems seem to differ on this.
It is not PostgreSQL's doing.

Yours,
Laurenz Albe

Re: UNIX vs Windows LC CTYPE and UPPER mu

От
Peter Eisentraut
Дата:
On tor, 2012-04-19 at 10:02 +0200, Albe Laurenz wrote:
> After looking at the UNICODE character list I tend to agree that
> code point 0xB5 (MICRO SIGN) should not be converted to
> 0x39C (GREEK CAPITAL LETTER MU).  There's 0x3BC for GREEK SMALL LETTER MU.

http://www.unicode.org/Public/UNIDATA/UnicodeData.txt has:

00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C

and

039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;

So this mapping is correct.

Case conversion is not necessarily round-trip.