2009-09-15 17 views
7

我使用python 2.6.2的xml.etree.cElementTree創建XML文檔編碼問題:用python的etree.tostring

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編碼,我相當確定)。

任何意見,我做錯了將不勝感激。

回答

16

您正在對文本進行兩次編碼。試試這個:

import xml.etree.cElementTree as etree 
elem = etree.Element('tag') 
elem.text = u"Würth Elektronik Midcom" 
xml = etree.tostring(elem,encoding='UTF-8') 
0

etree.tostring(elem, encoding=str)

將在Python 3

您還可以通過 序列化到不聲明Unicode字符串傳遞unicode功能編碼(或返回str但不binarystr in Py3), 或名稱'unicode'。這會將返回值從字節 字符串更改爲未編碼的unicode字符串。