Вы должны .decode
ваши входящие cp1252
, чтобы получить строки Unicode, и .encode
их в utf-8
(безусловно, предпочтительная кодировка для XML) во время написания, т. Е.
f.write(unicodedata.encode('utf-8'))
, где unicodedata
получается .decode('cp1252')
для входящих строк.
Можно нанести на нее помаду, используя модуль codecs
стандартной библиотеки Python, чтобы открывать входной и выходной файлы, каждый из которых имеет правильную кодировку вместо простого open
, но я покажу основной механизм (и часто, хотя и не всегда, яснее и яснее применять его напрямую, а не косвенно через codecs
- вопрос стиля и вкуса).
Что делает имеет значение, так это общий принцип: переводите свои входные строки в юникод, как только сможете сразу после их получения, используйте юникод на протяжении всей обработки, переводите их обратно в байтовые строки в конце, пока вы может перед тем как вывести их. Это дает вам самую простую, простую жизнь! -)