1
我試圖用cElementTree保存編碼爲UTF-16的XML文件。這是相同的項目,但不同於DOCTYPE問題:How to create <!DOCTYPE> with Python's cElementTree如何將ElementTree保存爲UTF-16
我知道如果我不在字符串中聲明編碼,cElementTree會添加它。所以,代碼是這樣的:
import xml.etree.cElementTree as ElementTree
from StringIO import StringIO
s = '<?xml version=\"1.0\" ?><!DOCTYPE tmx SYSTEM \"tmx14a.dtd\" ><tmx version=\"1.4a\" />'
tree = ElementTree.parse(StringIO(s)).getroot()
header = ElementTree.SubElement(tree,'header',{'adminlang': 'EN',})
body = ElementTree.SubElement(tree,'body')
ElementTree.ElementTree(tree).write('myfile.tmx','UTF-16')
當我用UTF-8編寫文件時,everthing很棒。但是,當我更改爲UTF-16時,文本編碼已損壞。它也缺少所需的字節順序標記。當我嘗試添加BOM到字符串的開頭,
s = '\xFF\xFE<?xml version=\"1.0\"......
ElementTree的報告錯誤「沒有很好地形成(標記無效)第1行1列」。
所有的緩衝區都是unicode數據。如何保存爲UTF-16 XML文件?