Обсуждение: UNIX vs Windows LC CTYPE and UPPER mu
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
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
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.