[Python-de] Was sein sollte

Andreas Jung andreas at andreas-jung.com
Mit Dez 31 10:47:51 CET 2003


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 at 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 at python.net
> http://python.net/mailman/listinfo/python-de