ElementTree和UnicodeEncodeError:

时间:2014-01-14 10:40:22

标签: python python-3.x unicode elementtree

我正在处理以下xml文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<tag>…</tag>

就像python文档说的那样:

import xml.etree.cElementTree as ET

tree = ET.parse('file.xml')
print(tree.getroot().text)

但不幸的是我遇到了这样的错误:

Traceback (most recent call last):
  File "main.py", line 48, in <module>
    print(tree.getroot().text)
  File "C:\Python33\lib\encodings\cp852.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2026' in position 0: character maps to <undefined>

我做错了什么?

1 个答案:

答案 0 :(得分:2)

不要打印该值。处理它(你更有可能做的事情)将会正常工作。

如果你真的想要打印它,首先将unicode字符串转换为输出媒体可以处理的内容(例如UTF-8编码的字符串)。如果那里有奇怪的字符,你可以使用它来至少转换其余字符:

byteString = value.encode(sys.stdout.encoding, 'ignore')
originalWithoutTrouble = byteString.decode(sys.stdout.encoding)
print(originalWithoutTrouble)

但是当然,然后可能会丢失一些字符(在这种情况下是省略,正如Martijn指出的那样)。