Tengo una falla cerebral para entender leer y escribir texto en un archivo (Python 2.4).
# La cadena, que tiene una a-aguda. ss = u "Capitxe1n" ss8 = ss.encode("utf8") repr(ss), repr(ss8)
("u"Capitxe1n"", ""Capitxc3xa1n"")
imprimir ss, ss8 imprimir >> abrir("f1","w"), ss8 >>> archivo("f1").read( ) "Capitxc3xa1n "
Así que escribo Capitxc3xa1n
en mi editor favorito, en el archivo f2.
Luego:
>>> open("f1").read() "Capitxc3xa1n " >>> open("f2").read() "Capitxc3xa1n " >> ;>abrir("f1").read().decode("utf8") u"Capitxe1n " >>>abrir("f2").read().decode("utf8") u"Capit xc3xa1n "
¿Qué es lo que no entiendo aquí? Claramente hay algo de magia vital (o sentido común) que me falta. ¿Qué se escribe en los archivos de texto para obtener las conversiones adecuadas?
Lo que realmente no estoy asimilando aquí es cuál es el punto de la representación UTF-8, si en realidad no puedes hacer que Python reconocerlo, cuando viene de fuera. ¡Tal vez debería simplemente JSON volcar la cadena y usarla en su lugar, ya que tiene una representación asciiable! Más concretamente, ¿hay una representación ASCII de este objeto Unicode que Python reconocerá y decodificará cuando provenga de un archivo? Si es así, ¿cómo lo obtengo?
>>> imprimir simplejson.dumps(ss) ""Capitu00e1n"" >>> imprimir >> archivo("f3","w"), simplejson.dumps(ss) >>> simplejson.load(open("f3")) u"Capitxe1n"