使用python的etree.tostring编码问题

smo*_*ock 10 python xml tostring utf-8

我正在使用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')
Run Code Online (Sandbox Code Playgroud)

在一天结束时,xml看起来像:

<?xml version='1.0' encoding='UTF-8'?>
<tag>W&#195;&#188;rth Elektronik Midcom</tag>
Run Code Online (Sandbox Code Playgroud)

看起来tostring忽略了编码参数,并将'ü'编码成其他字符编码('ü'是有效的utf-8编码,我很确定).

任何关于我做错的建议都将不胜感激.

Joh*_*kin 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')
Run Code Online (Sandbox Code Playgroud)


Bai*_*ong 5

etree.tostring(elem, encoding=str)

会返回,但在 Python 3 中str不会返回binary

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