Thread: UNIX vs Windows LC CTYPE and UPPER mu

UNIX vs Windows LC CTYPE and UPPER mu

From
service prodat
Date:
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

From
"Albe Laurenz"
Date:
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

From
Peter Eisentraut
Date:
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.