gpt4 book ai didi

python - 将其写入文件时出现 XML 编码错误

转载 作者:数据小太阳 更新时间:2023-10-29 02:12:50 26 4
gpt4 key购买 nike

我认为我采用了正确的方法,但我仍然遇到编码错误:

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编码的字符,这是站点自己在meta标签中指定的编码。但是当 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 header 中定义正确的编码。您不需要在 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()

可能有一种方法可以在 header 中设置默认编码,但我找不到。以上方法在浏览器上没有任何错误,所有数据显示完美。

关于python - 将其写入文件时出现 XML 编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7589827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com