[Python-de] Was sein sollte

Martin v. Loewis martin at v.loewis.de
Mit Dez 31 00:01:18 CET 2003


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

Willst Du das wirklich? Aus dieser Warnung wird irgendwann mal ein
Syntaxfehler. Dann werden sich die Leute beschweren, nicht gewarnt
worden zu sein.

> 2) print u"hübsch"
> 
> sollte keinen UnicodeEncodeError liefern, sondern den String per Latin-1
> kodieren.

Der Wunsch geht mit Python 2.3 in Erfüllung.

> 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

(weil der Byte-String dekodiert wird, um zu dem Unicodestring addiert zu
werden)

> a) "hübsch" per Latin-1 dekodieren

Warum gerade Latin-1?

> 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.

Aus Rückwärtskompatibilität liefert u"hübsch" keine Exception. In
Zukunft ist es ein Syntaxfehler, u"hübsch" im Quelltext zu haben,
ohne die Kodierung des Quelltexts deklariert zu haben.

> 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.

Nicht in 2.3.

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

a) Es ist eurozentrisch
b) Es ist Windows-inkompatibel
c) Es ist Mac-inkompatibel

Kurz: Du möchtest, dass ISO-8859-1 das default encoding ist.
Einige Dich mit den Russen, die wollen koi8-r, mit den Chinesen,
die wollen gb2312, und mit den Japanern, die wollen shift-jis
(vielleicht auch euc-jp).

Ich persönlich will, dass UTF-8 das default encoding ist.
Andere Deutsche verlangen bei der Gelegenheit immer, dass
iso-8859-15 das default encoding ist. Warum ist Dein Wunsch
besser als der Wunsch der Rest der Welt?

Ciao,
Martin