[Python-de] print von Nicht-ASCII-Zeichen
Diez B. Roggisch
deets at web.de
Mon Aug 28 17:41:28 CEST 2006
>
> Dann hast du die erste Zeile des Programms entfernt oder benutzt ein
> uraltes Python. Offensichtlich denkt dein Python naemlich der Quellcode
> waere in ascii, ist er aber nicht, was auch mit der Zeile
>
> # -*- coding: utf_8 -*-
>
> angegeben wird. Hier mit python2.4 funktioniert das wunderbar, sowohl
> mit UTF-8 als auch Latin1 Umgebung.
Das stimmt nicht. Diese Deklaration fuehrt einzig und alleine dazu, das
unicode-literale mit dem entsprechenden encoding ausgewerted werden & dann zu
unicode gewandelt.
Alexanders Problem hingegen haengt mit der Wandlung eines unicode-strings zu
eineim byte-string fuer die Ausgabe zusammen.
Ich weiss nicht genau, wie python dazu kommt ein encoding an sys.stdout zu
pappen - und es kann sein, das dies unter bestimmten Umstaenden eben nicht
geht.
Was aber auf jeden Fall klappen sollte: sys.stdout durch einen encoding-stream
aus dem codecs modul zu ersetzen. Dann sollte das unter allen Umstaenden
gehen.
Also etwa so in der Art:
sys.stdout = codecs.EncodedFile(sys.stdout, data_encoding="utf-8",
errors="foo")
Das foo ist natuerlich unsinn - aber ich finde im Moment nicht die moeglichen
Werte ausser dem default strict - welcher an dieser Stelle fuer
debugging-Zwecke vielleicht duerch eine relaxtere Variante ersezts werden
sollte.
Diez
More information about the python-de
mailing list