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

Detlef Lannert lannert at uni-duesseldorf.de
Mon Mai 23 15:57:12 CEST 2005


Hallo Dinu,

> 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)?

Was hast Du für Sprach-/Codeeinstellungen? Eventuell verändert kreatives
Experimentieren das Ergebnis, insbes. mit den Umgebungsvariablen LANG und
LC_CTYPE -- oder wie man das unter Win bzw. MacOS macht ...

det2:~/python/cvs/python$ echo $LANG
de_DE at euro
det2:~/python/cvs/python$ python
Python 2.3.5 (#2, May  4 2005, 08:51:39) 
[GCC 3.3.5 (Debian 1:3.3.5-12)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> u"ö" == u"ö".upper()
False
>>> 


Ansonsten solltest Du im Programm die Locale für LC_CTYPE passend setzen:

>>> import locale
>>> locale.setlocale(locale.LC_CTYPE, "de_DE at euro")
'de_DE at euro'
>>> "ö", "ö".upper()
('\xf6', '\xd6')
>>> 


  Detlef