Ich habe ein Gehirnversagen beim Verstehen des Lesens und Schreibens von Text in eine Datei (Python 2.4).
# Die Zeichenfolge, die ein a-akut enthält. ss = u "Capitxe1n" ss8 = ss.encode("utf8") repr(ss), repr(ss8)
("u"Capitxe1n"", ""Capitxc3xa1n"")
print ss, ss8 print >> open("f1","w"), ss8 >>> file("f1").read( ) "Capitxc3xa1n "
Also tippe ich Capitxc3xa1n
in meinen bevorzugten Editor ein, in Datei f2.
Dann:
>>> open("f1").read() "Capitxc3xa1n " >>> open("f2").read() "Capitxc3xa1n " >> ;> open("f1").read().decode("utf8") u"Capitxe1n " >>> open("f2").read().decode("utf8") u"Capit xc3xa1n "
Was verstehe ich hier nicht? Offensichtlich fehlt mir da ein entscheidendes bisschen Magie (oder gesunder Menschenverstand). Was muss man in Textdateien eingeben, um richtige Konvertierungen zu erhalten?
Was ich hier wirklich nicht verstehe, ist, was der Sinn der UTF-8-Darstellung ist, wenn Sie Python nicht dazu bringen können erkenne es, wenn es von außen kommt. Vielleicht sollte ich die Zeichenfolge einfach JSON-dumpen und stattdessen diese verwenden, da dies eine zuordenbare Darstellung hat! Genauer gesagt, gibt es eine ASCII-Darstellung dieses Unicode-Objekts, die Python erkennt und dekodiert, wenn es aus einer Datei kommt? Wenn ja, wie bekomme ich es?
>>> print simplejson.dumps(ss) ""Capitu00e1n"" >>> drucken >> file("f3","w"), simplejson.dumps(ss) >>> simplejson.load(open("f3")) u"Capitxe1n"