
Von was träumst Du? Warum in der Welt sollte Python per Default alles was Umlaute hat als Latin-1 behandeln? Wir leben in einer internationalen Welt in der es noch andere Encodings neben Latin1 gibt. Du vertrittst die gleiche egoistische Sichtweise wie unsere amerikanischen Freunde, die nur ASCII und sonst nicht kennen. Genau diese Sichtweise hat z.B. dazu geführt, dass Zope lange Zeit sehr ASCII zentriert war und Unicodesupport ein Fremdwort war. Die Voreinstellung von ASCII als Defaultencoding wurde von GvR ganz bewusst so gewählt (nämlich aus den genannten Gründen, dass man es sonst niemanden recht machen kann). ASCII ist nun mal der kleinester gemeinsame Nenner). Wenn Du etwas anderes haben willst, dann musst Du es explizit konfigurieren. Insofern bleibt Dein Traum ein Traum. -aj --On Dienstag, 30. Dezember 2003 21:53 Uhr +0100 Gerson Kurz <Gerson.Kurz@t-online.de> wrote:
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
_______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de
_______________________________________________ Python-de maillist - Python-de@python.net http://python.net/mailman/listinfo/python-de