13

我正在使用 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 忽略了编码参数并将“ü”编码为其他字符编码(“ü”是有效的 utf-8 编码,我很确定)。

任何关于我做错了什么的建议将不胜感激。

4

2 回答 2

20

您正在对文本进行两次编码。试试这个:

import xml.etree.cElementTree as etree
elem = etree.Element('tag')
elem.text = u"Würth Elektronik Midcom"
xml = etree.tostring(elem, encoding='UTF-8')
于 2009-09-15T16:30:15.390 回答
4

etree.tostring(elem, encoding=str)

将返回str但不在binaryPython 3 中

unicode您还可以通过将函数作为编码(或str在 Py3 中)或名称“unicode”传递来序列化为无需声明的 Unicode 字符串。这会将返回值从字节字符串更改为未编码的 unicode 字符串。

于 2018-01-28T12:51:28.020 回答