我正在尝试解析在我公司内部创建的 XML 文件。该文件应该是 UTF-16 编码的,但是我正在编写的 Python 脚本出现错误(见下文)。我试图找出问题出在文件还是我的脚本上。有没有办法验证编码?我所有的搜索都以 XML Validation 工具或检查格式良好的 XML 的工具结束。我希望尝试 XMLSpy,但我目前无法访问它。
引发错误的代码是“parser.parse”行(Python 2.7):
from xml.sax import make_parser
from xml.sax.handler import ContentHandler
import codecs
parser = make_parser()
curHandler = XmlHandler()
parser.setContentHandler(curHandler)
parser.parse(codecs.open(infile, 'rb', fileEncoding))
其中“infile”是有问题的 XML 文件,而在这种情况下“fileEncoding”是“UTF-16”。
该脚本适用于 UTF-8 编码文件。但是对于 UTF-16 文件,我收到以下错误:
xml.sax._exceptions.SAXParseException: XmlFile.xml:1:30: encoding specified in XML declaration is incorrect
很抱歉,我无法发布 XML。它并不复杂,但确实包含来自多个外国的单词/名称。我目前的怀疑是编码是 UTF-8,但编码属性被设置为 UTF-16。有没有办法验证这一点?
更新:好的。所以现在我彻底糊涂了。我将 XML 文件的编码更改为 UTF-8 而不是 UTF-16,但忘记在脚本上更改它。脚本按预期运行。所以文件 encoding='UTF-8' 但打开时:
parser.parse(codecs.open(infile, 'rb', 'UTF-16'))
按预期工作,没有错误。
更多信息:我正在 Win7/Server 2008 环境中开发/执行。