У меня проблемы с пониманием чтения и записи текста в файл (Python 2.4).
# Строка, в которой есть a-acute. 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 "
Поэтому я ввожу Capitxc3xa1n
в свой любимый редактор, в файл f2.
Затем:
>>> open("f1").read() "Capitxc3xa1n " >>> open("f2").read() "Capitxc3xa1n " >> ;>open("f1").read().decode("utf8") u"Capitxe1n " >>> open("f2").read().decode("utf8") u"Capit xc3xa1n "
Что я здесь не понимаю? Очевидно, что я упускаю какую-то жизненно важную часть магии (или здравого смысла). Что нужно вводить в текстовые файлы, чтобы получить правильное преобразование?
Что я действительно не могу понять здесь, так это то, в чем заключается смысл представления UTF-8, если вы не можете на самом деле заставить Python узнать его, когда он приходит извне. Может быть, мне следует просто выгрузить строку в формате JSON и использовать ее вместо этого, поскольку она имеет доступное представление! Более того, существует ли ASCII-представление этого объекта Unicode, которое Python распознает и декодирует при входе из файла? Если да, то как мне его получить?
>>> print simplejson.dumps(ss) ""Capitu00e1n"" >>> печать >> файл("f3","w"), simplejson.dumps(ss) >>> simplejson.load(open("f3")) u"Capitxe1n"