0

这个问题的标题与这个问题相同,但我的问题不同。

我使用 tarfile.TarFile.extractfile() 从 tar.gz 存档中读取数据并存储在 xml.etree.ElementTree.Element 中。数据采用 utf-8 编码。

当我尝试使用 xml.etree.ElementTree.ElementTree.write() 将其放入文件中时,我得到了这个:

Traceback (most recent call last):
  File "../python/GetDoc.py", line 150, in <module>
    ET.ElementTree(elements).write(args.outfile, encoding="us-ascii", method="text")
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 815, in write
    _serialize_text(write, self._root, encoding)
  File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 1007, in _serialize_text
    write(part.encode(encoding))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 10: ordinal not in range(128)
4

2 回答 2

1

你是如何从文件中读取数据的?您是否正确地将其从 UTF-8 解码为 un​​icode 对象?ElementTree 需要 unicode 对象,而不是 UTF-8 编码的字节串。

于 2012-07-18T02:36:49.510 回答
0

我可以通过使用 myString.decode('utf-8') 将我的字符串转换为 unicode 来解决这个问题,然后再将它们添加到我的 ElementTree.Element 对象中。似乎 ET.ElementTree.write() 对其他字符串编码不满意。

于 2012-07-18T02:26:44.597 回答