To main content

LANG=C bricht Unicode

Veröffentlicht von Benjamin Marwell am

Python 3 ist dafür bekannt, Unicode besonders einfach zu unterstützen. Wenn es trotzdem zu einer UnicodeDecodeException kommt, muss das gar nicht mal am Quelltext liegen.

Heute habe ich die ganze Zeit versucht, ein Programm mit Unicode-Eingabe zu starten. Jedes mal las ich:

File "/usr/lib/python3.0/io.py", line 1494, in write b = encoder.encode(s) File "/usr/lib/python3.0/encodings/ascii.py", line 22, in encode return codecs.ascii_encode(input, self.errors)[0] UnicodeEncodeError: 'ascii' codec can't encode character '\xf6' in position 40: ordinal not in range(128)

Nun, offensichtlich wollte mein Programm also ASCII ausgeben. Warum zur Hölle will es denn den ASCII-Coder nutzen? Ich benutze doch UTF.8-kodierte Strings! Kein Wunder, dass das nicht klappt...

Lösung: Das Programm wurde mit LANG=C gestartet. Damit wurde eine ANSI-Console aktiviert. LANG="en_US.utf8" tut es auch und verhindert solche blöden Fehler. MAN!