[Python-de] Merkwuerdiges bei "umlaut".upper()

Dinu Gherman gherman at darwin.in-berlin.de
Mon Mai 23 15:32:33 CEST 2005


Hallo,

oehm... aehm... irgendwie darf das doch wohl nicht sein, dass die 
String-
Methode upper() kleine Umlaute unverändert laesst, egal ob Byte-Strings
oder Unicode-Strings, egal ob auf Mac OS X oder Windows (Debian Linux 
an-
scheinend genauso)? Im Beispiel unten kommt nur bei Unicode unter 
Windows
das Ergebnis, das ich erwarte. Muss man dazu vielleicht schon im Modul
locale etwas einstellen?

In allen Beispielen wird ein kleines "oe" verwendet (nur, falls die 
Email-
Programme das unterwegs verhunzen... Unter Mac OS X (10.3.9) habe ich 
ein
normales Terminal-Fenster benutzt und unter Windows XP eine normale DOS-
aehnliche Konsole... lower() bzw. andere Umlaute habe ich nicht 
getestet.
Scheint aber mit frz. Vokalen mit Accents das Gleiche zu sein.

Leicht irritiert,

Dinu


Python 2.4 (#1, Feb  7 2005, 21:41:21)
[GCC 3.3 20030304 (Apple Computer, Inc. build 1640)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
 >>> "ö"
'\xc3\xb6'
 >>> print "ö"
ö
 >>> print "ö".upper()
ö
 >>> "ö" == "ö".upper()
True
 >>> u"ö" == u"ö".upper()
True


Python 2.4 (#60, Nov 30 2004, 11:49:19) [MSC v.1310 32 bit (Intel)] on 
win32
Type "help", "copyright", "credits" or "license" for more information.
 >>> "ö"
'\x94'
 >>> print "ö"
ö
 >>> print "ö".upper()
ö
 >>> "ö" == "ö".upper()
True 
 >>> u"ö" == u"ö".upper()
False