[Python-de] print von Nicht-ASCII-Zeichen

"Martin v. Löwis" martin at v.loewis.de
Mit Sep 13 18:08:56 CEST 2006


Alexander 'boesi' Bösecke schrieb:
>> Man müsste erkennen, dass Windows stdout "ins nichts" leitet,
>> und könnte dann gefahrlos encoding auf "UTF-8" setzen. 
> 
> Warum kann man nicht UTF-8 als Standard anstatt ASCII nehmen? Wenn ein
> Encoding-Fehler bei sichtbaren stdout auftritt, ist das ja leicht
> erkennbar (und behebbar).

Das führt unweigerlich zu moji-bake (Google kann den Begriff erklären).
Das Default-Encoding wird ja nicht nur für print benutzt, sondern
grundsätzlich an allen Stellen, an denen Unicode in Bytes konvertiert
wird und umgekehrt. Bei vielen Anwendungen geht die Ausgabe in eineD
Datei oder auf eine Netzverbindung.

Natürlich ist es "leicht erkennbar", dass da moji-bake steht -
allerdings nur für den Nutzer, der das Programm aufruft, nicht
für dessen Autor. Der ist längst über alle Berge, und hat
seinen Code nicht ernsthaft mit nicht-ASCII-Zeichen getestet
(weil er ja sowieso kein Französisch spricht, und Japanisch
auch nicht). Hast Du Dich auch nicht schon geärgert, wenn
Dein Name als "Bösecke" auftaucht? Bei Schriftformen,
die vorwiegend ohne lateinische Zeichen auskommen, ist die
Software dann unbrauchbar.

Auch als Autor hat man es bei moji-bake schwer zu verstehen,
wo es eigentlich herkommt. Es wurde im Webformular eingelesen,
ging dort durch drei Stufen in die Datenbank, und kommt in
der Email falsch raus. An welcher Stelle ist jetzt der
Konvertierungsfehler aufgetreten? Python zeigt den
Konvertierungsfehler an der Stelle an, wo er auftritt; damit
kann man ihn leichter finden und beheben.

Wie gesagt: Man könnte für stdout von Win32-GUI-Anwendungen
eine Ausnahme machen, da es egal ist, ob es falsch kodiert
wird. Dazu müsste man halt zuverlässig diesen Fall erkennen
können.

Ciao,
Martin



More information about the python-de mailing list