概述
#!/usr/bin/python # -*- coding: utf-8 -*- import xml.etree.ElementTree as ET import codecs testtag = ET.Element('unicodetag') testtag.text = u'Töreboda' #The o is really ö (o with two dots over). No idea why SO dont display this expfile = codecs.open('testunicode.xml',"w","utf-8-sig") ET.ElementTree(testtag).write(expfile,encoding="UTF-8",xml_declaration=True) expfile.close()
这样会产生错误
Traceback (most recent call last): File "unicodetest.py",line 10,in <module> ET.ElementTree(testtag).write(expfile,xml_declaration=True) File "/usr/lib/python2.7/xml/etree/ElementTree.py",line 815,in write serialize(write,self._root,encoding,qnames,namespaces) File "/usr/lib/python2.7/xml/etree/ElementTree.py",line 932,in _serialize_xml write(_escape_cdata(text,encoding)) File "/usr/lib/python2.7/codecs.py",line 691,in write return self.writer.write(data) File "/usr/lib/python2.7/codecs.py",line 351,in write data,consumed = self.encode(object,self.errors) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
使用“us-ascii”编码代替工作正常,但不保留数据中的unicode字符.发生什么事?
只要这样做:
#expfile = codecs.open('testunicode.xml',"utf-8-sig") ET.ElementTree(testtag).write('testunicode.xml',xml_declaration=True) #expfile.close()
总结
以上是编程之家为你收集整理的python – 用ElementTree写入带有utf-8数据的xml utf-8文件全部内容,希望文章能够帮你解决python – 用ElementTree写入带有utf-8数据的xml utf-8文件所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧