我正在使用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&#195;&#188;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字符串。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top