UnicodeEncodeError:'ascii'编解码器无法编码字符

时间:2012-11-21 12:38:33

标签: python unicode elementtree

我有一个带有网址响应的字典。像:

>>> d
{
0: {'data': u'<p>found "\u62c9\u67cf \u591a\u516c \u56ed"</p>'}
1: {'data': u'<p>some other data</p>'}
...
}

在此数据值(xml.etree.ElementTree)上使用d[0]['data']函数时,我收到了最着名的错误消息:

UnicodeEncodeError: 'ascii' codec can't encode characters...

我应该怎么做这个Unicode字符串,使其适合ElementTree解析器?

PS。请不要向我发送带有Unicode&amp; amp;的链接。 Python解释。我已经很遗憾地阅读了这一切,并且无法利用它,因为希望其他人可以。

1 个答案:

答案 0 :(得分:25)

您必须手动编码为UTF-8:

ElementTree.fromstring(d[0]['data'].encode('utf-8'))

因为API仅将编码字节作为输入。 UTF-8是此类数据的良好默认值。

它将能够从那里再次解码为unicode:

>>> from xml.etree import ElementTree
>>> p = ElementTree.fromstring(u'<p>found "\u62c9\u67cf \u591a\u516c \u56ed"</p>'.encode('utf8'))
>>> p.text
u'found "\u62c9\u67cf \u591a\u516c \u56ed"'
>>> print p.text
found "拉柏 多公 园"