Ik heb een hersenprobleem bij het begrijpen van het lezen en schrijven van tekst naar een bestand (Python 2.4).
# De tekenreeks met een a-acute erin. 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 "
Dus typ ik Capitxc3xa1n
in mijn favoriete editor, in bestand f2.
Vervolgens:
>>> open("f1").read() "Capitxc3xa1n " >>> open("f2").read() "Capitxc3xa1n " >> ;> open("f1").read().decode("utf8") u"Capitxe1n " >>> open("f2").read().decode("utf8") u"Capit xc3xa1n "
Wat begrijp ik hier niet? Het is duidelijk dat er een essentieel stukje magie (of gezond verstand) is dat ik mis. Wat typt men in tekstbestanden om de juiste conversies te krijgen?
Wat ik hier echt faal, is wat het punt is van de UTF-8-representatie, als je Python er niet echt toe kunt krijgen om herken het, als het van buiten komt. Misschien moet ik gewoon JSON de string dumpen en die in plaats daarvan gebruiken, omdat dat een aanvaardbare representatie heeft! Meer ter zake, is er een ASCII-representatie van dit Unicode-object dat Python zal herkennen en decoderen wanneer het uit een bestand komt? Zo ja, hoe krijg ik die dan?
>>> print simplejson.dumps(ss) ""Capitu00e1n"" >>> afdrukken >> file("f3","w"), simplejson.dumps(ss) >>> simplejson.load(open("f3")) u"Capitxe1n"