使用python的etree.tostring编码问题
题
我正在使用python 2.6.2的xml.etree.cElementTree来创建一个xml文档:
import xml.etree.cElementTree as etree
elem = etree.Element('tag')
elem.text = (u"Würth Elektronik Midcom").encode('utf-8')
xml = etree.tostring(elem,encoding='UTF-8')
在一天结束时,xml看起来像:
<?xml version='1.0' encoding='UTF-8'?>
<tag>Würth Elektronik Midcom</tag>
看起来tostring忽略了编码参数并编码了'&#252;'进入其他一些字符编码('&#252;'是一个有效的utf-8编码,我很确定)。
对于我做错的任何建议都将不胜感激。
解决方案
您正在对文本进行两次编码。试试这个:
import xml.etree.cElementTree as etree
elem = etree.Element('tag')
elem.text = u"Würth Elektronik Midcom"
xml = etree.tostring(elem,encoding='UTF-8')
其他提示
etree.tostring(elem,encoding = str)
将在Python 3中返回 str
但不返回 binary
您也可以序列化为Unicode字符串,而无需声明 传递
unicode
函数作为编码(或Py3中的str
), 或者名字'unicode'。这会更改一个字节的返回值 字符串到未编码的unicode字符串。
不隶属于 StackOverflow