Я создаю XML-файл в Python, и на моем XML-поле есть поле, в которое я помещаю содержимое текстового файла. Я делаю этоUnicodeDecodeError: кодек ascii не может декодировать байт 0xc2
f = open ('myText.txt',"r")
data = f.read()
f.close()
root = ET.Element("add")
doc = ET.SubElement(root, "doc")
field = ET.SubElement(doc, "field")
field.set("name", "text")
field.text = data
tree = ET.ElementTree(root)
tree.write("output.xml")
И тогда я получаю UnicodeDecodeError
. Я уже пробовал поставить специальный комментарий # -*- coding: utf-8 -*-
поверх моего скрипта, но все еще получил ошибку. Кроме того, я уже пытался применить кодировку моей переменной data.encode('utf-8')
, но все еще получил ошибку. Я знаю, что эта проблема очень распространена, но все решения, которые я получил от других вопросов, не работали для меня.
UPDATE
Traceback: Использование только специальный комментарий на первой строке сценария
Traceback (most recent call last):
File "D:\Python\lse\createxml.py", line 151, in <module>
tree.write("D:\\python\\lse\\xmls\\" + items[ctr][0] + ".xml")
File "C:\Python27\lib\xml\etree\ElementTree.py", line 820, in write
serialize(write, self._root, encoding, qnames, namespaces)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 939, in _serialize_xml
_serialize_xml(write, e, encoding, qnames, None)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 939, in _serialize_xml
_serialize_xml(write, e, encoding, qnames, None)
File "C:\Python27\lib\xml\etree\ElementTree.py", line 937, in _serialize_xml
write(_escape_cdata(text, encoding))
File "C:\Python27\lib\xml\etree\ElementTree.py", line 1073, in _escape_cdata
return text.encode(encoding, "xmlcharrefreplace")
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 243: ordina
l not in range(128)
TraceBack: Использование .encode('utf-8')
Traceback (most recent call last):
File "D:\Python\lse\createxml.py", line 148, in <module>
field.text = data.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 227: ordina
l not in range(128)
я использовал .decode('utf-8')
и сообщение об ошибке не появился, и он успешно создал мой XML-файл. Но проблема в том, что XML не доступен для просмотра в моем браузере.
Было бы полезно увидеть все сообщение об ошибке, чтобы узнать, откуда оно взялось. Тем временем попробуйте использовать 'decode' вместо' encode'. –
Обновлено, он успешно создал мой XML, когда я использую 'decode', но файл не доступен для просмотра в моем браузере. –
Обратите внимание, что использование '# - * - кодирования: utf-8 - * -' служит только для вставки символов не ASCII в источники python. Это никак не влияет на кодирование/декодирование строк. Кроме того, если файл 'myText.txt' не является ASCII, вы должны использовать' codecs.open' и предоставить правильную кодировку: 'codecs.open ('myText.txt', 'r', 'utf-8')' , – Bakuriu