[Python-de] Problem bei Ausgabe von Unicode-Strings

Christopher Arndt chris at chrisarndt.de
Mo Sep 22 13:09:52 CEST 2014


Am 22.09.2014 um 12:56 schrieb Harald Wenninger:
> Das print-Statement scheint Probleme zu haben, einen Unicode-String
> korrekt auszugeben. Wie schaffe ich das?

Bei der Ausgabe eines Unicode-Strings auf die Konsole oder ein File muss
dieser zunächst in einen kodierten Binary-String (in Python2: str, in
Python 3: byte) umgewandelt werden. Falls du den Unicode-String nicht
selbst enkodierst (wobei du dann ein passendes Encoding angeben kannst),
geschieht dies implizit. Dabei wird dann das für den Ausgabestream
eingestellte (oder Default) Encoding verwendet.

In ersten Fall kann Python das Encoding der Konsole feststellen (über
die TERM Umgebungsvariable), im zweiten Fall nicht, denn der
Ausgabestream ist ja keine Konsole, sondern ein File. Also verwendet
Python als Default ASCII, was natürlich nicht klappt, weil 'ä' darin
nicht vorkommt.

Lösung: an den Input/Output-Boundaries immer eingehende Daten explizit
nach Unicode dekodieren und auszugebende Strings explizit kodieren (z.B.
nach UTF-8 oder den User das Encoding setzen lassen).


Chris



Mehr Informationen über die Mailingliste python-de