python – 将文件写入文件时出现XML编码错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 将文件写入文件时出现XML编码错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1787字,纯文字阅读大概需要3分钟。
内容图文
![python – 将文件写入文件时出现XML编码错误](/upload/InfoBanner/zyjiaocheng/769/79c4ee284e104426b9d55f660e0d0e70.jpg)
我想我正在遵循正确的方法,但我仍然遇到编码错误:
from xml.dom.minidom import Document
import codecs
doc = Document()
wml = doc.createElement("wml")
doc.appendChild(wml)
property = doc.createElement("property")
wml.appendChild(property)
descriptionNode = doc.createElement("description")
property.appendChild(descriptionNode)
descriptionText = doc.createTextNode(description.decode('ISO-8859-1'))
descriptionNode.appendChild(descriptionText)
file = codecs.open('contentFinal.xml', 'w', encoding='ISO-8859-1')
file.write(doc.toprettyxml())
file.close()
描述节点包含ISO-8859-1编码中的一些字符,这是由元标记中的自身指定的编码.但是当doc.toprettyxml()开始在文件中写入时,我得到了以下错误:
Traceback (most recent call last):
File "main.py", line 467, in <module>
file.write(doc.toprettyxml())
File "C:\Python27\lib\xml\dom\minidom.py", line 60, in toprettyxml
return writer.getvalue()
File "C:\Python27\lib\StringIO.py", line 271, in getvalue
self.buf += ''.join(self.buflist)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe1 in position 10: ordinal not in range(128)
为什么我会收到此错误,因为我使用相同的标准进行解码和编码?
编辑
我的脚本文件中有以下减速:
#!/usr/bin/python
# -*- coding: utf-8 -*-
可能这是冲突的吗?
解决方法:
好的,我找到了解决方案.当数据处于其他外语时,您只需要在xml头中定义正确的编码.你不需要在file.write(doc.toprettyxml(encoding =’ISO-8859-1′))中描述编码,即使你打开一个文件来写file = codecs.open(‘contentFinal.xml’,’ w’,encoding =’ISO-8859-1′).以下是我使用的技术.可能这不是一种专业方法,但对我有用.
file = codecs.open('abc.xml', 'w')
xm = doc.toprettyxml()
xm = xm.replace('<?xml version="1.0" ?>', '<?xml version="1.0" encoding="ISO-8859-1"?>')
file.write(xm)
file.close()
可能有一种方法在标头中设置默认编码但我找不到它.
以上方法不会在浏览器上带来任何错误,所有数据都能完美显示.
内容总结
以上是互联网集市为您收集整理的python – 将文件写入文件时出现XML编码错误全部内容,希望文章能够帮你解决python – 将文件写入文件时出现XML编码错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。