我正在使用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忽略了编码参数,并将'ü'编码成其他一些字符编码('ü'是一个有效的utf-8编码,我很确定)。
对于我做错的任何建议都将不胜感激。
答案 0 :(得分:19)
您正在对文本进行两次编码。试试这个:
import xml.etree.cElementTree as etree
elem = etree.Element('tag')
elem.text = u"Würth Elektronik Midcom"
xml = etree.tostring(elem,encoding='UTF-8')
答案 1 :(得分:1)
etree.tostring(elem, encoding=str)
将在Python 3中返回str
但不返回binary
您也可以序列化为Unicode字符串,而无需声明 将
unicode
函数作为编码传递(或在Py3中传递str
), 或者名字'unicode'。这会更改一个字节的返回值 字符串到未编码的unicode字符串。