[Python-de] Was sein sollte
kgm
km-news3 at onlinehome.de
Don Jan 1 16:51:22 CET 2004
Hallo Martin,
> Da gibt es mehrere Probleme:
nach meiner Meinung gibt es die Probleme 1+3 mit der jetzigen Lösung schon
genauso, ich sehe da keine echten neuen Probleme.
So ein Kodestück:
for tl in open("test.txt").readlines():
print tl
wird auch mit der jetzigen Py-Version nur dann wie gewünscht
funktionieren, wenn der Anwender "sinnvoll" mitspielt, er also in test.txt
das für sein System "passende" Encoding verwendet.
Überraschenderweise ist das in der Praxis fast immer der Fall, dh, obiges
Sript wird in der Praxis gut funktionieren, weil der User "mitspielt" und
zur Erzeugung seiner Datei "text.txt" das "passende" Koding seines Systems
verwendet. Py ist es völlig egal, welches das ist (Latin-1, koi8-r, was
auch immer...).
Wenn der User aber versucht, eine Datei von irgendeiner anderen Umgebung
mit einem exotischen Koding (auch bei Zeichen < 128) ausgeben will, dann
kommt Zeichenmüll raus, da kann Py noch soviel "aber USASCII ist doch mein
Standard" rufen ;-)
Punkt 2 müsstest Du es noch etwas genauer erklären (Beispiel?), ich kenne
Py-Interna nicht.
> Das ist nicht implementierbar, wenn man beliebige Encodings zulässt.
Wo wären da zur jetzigen Lösung neue Probleme?
>> Default-Encoding für Bytestrings vorbelegen?
Streichen wir die Idee. Default-Vorbelegung könnte ja weiter USASCII
bleiben.
Eins würde mich noch interessieren:
Wie legt Py die u-Strings intern eigentlich ab? 2 Byte, glaube ich. Werden
auch noch andere Infos ("Metadaten") abgelegt, zB, mit welchem Koding der
String erstellt wurde?
Achja: Frohes neues Jahr! :-)
Mit freundlichen Grüßen
Klaus Meyer :-)