[Python-de] Was sein sollte

Gerson Kurz Gerson.Kurz at t-online.de
Die Dez 30 21:53:09 CET 2003


Also, wenn ich was an dem Unicode-Handling ändern möchte, muß ich mir
erstmal klar werden, was mich stört. Meine verspätete
Weihnachtsmannwunschliste:

1) "DeprecationWarning: Non-ASCII character" werde ersatzlos gestrichen und
der Tag selbiger Tat werde in den Rang eines Nationalfeiertages erhoben.

2) print u"hübsch"

sollte keinen UnicodeEncodeError liefern, sondern den String per Latin-1
kodieren.

3) print u"hübsch" + "hübsch"

sollte keine UnicodeDecodeError liefern (wer weiss auf Anhieb, warum es hier
einen DecodeError gibt und nicht einen EncodeError?) sondern

a) "hübsch" per Latin-1 dekodieren
b) das Ergebnis per Latin-1 kodieren.

4) s = unicode("hübsch")

sollte keinen DecodeError liefern, sondern auf unicode("hübsch","latin-1")
hinauslaufen, zumal für mein laienhaftes Unverständnis u"hübsch" die
nicht-ausführliche-Version von unicode("hübsch") ist und u"hübsch" *keine*
Exception wirft.

5) print "hübsch".decode("latin-1")

sollte keinen UnicodeEncodeError liefern (wer weiss auf Anhieb, warum
"decode" einen "encode"-Fehler liefert? Hint: decode liefert den Fehler
nicht, print tut es) sondern den String per Latin-1 kodieren.

Die Punkte 2-5 lassen sich umsetzen, indem man in site.py das
defaultencoding auf "latin-1" setzt. Duh! Punkt 1 ist aus meiner Sicht eine
minimale Codeänderung, nämlich die im C-Code fest eingebraute
DeprecationWarning rauskommentieren.

Hab ich was vergessen?

Frage: Was sind eigentlich die gravierenden Nachteile eines geänderten
defaultencodings?

Nachschlag: Kann ich in einem Script, das ich ausliefern möchte, das
defaultencoding auf einfach weise auf latin-1 ändern? weil, die funktion
wird ja in site.py aus dem namespace gelöscht.

Ciao,
Gerson