2

我想用 minidom 解析一个文件:

with codecs.open(fname, encoding="utf-8") as xml:
   dom = parse(xml)

返回一个 UnicodeEncodeError。XML 文件为 UTF-8,没有 BOM 格式,并且具有

<?xml version="1.0" encoding="utf-8"?>

在第一行。

如果我首先读取文件,.encode("utf-8") 并将其传递给 parseString,它就可以工作。有没有办法直接用 minidom.parse 解析 UTF-8 XML 文件?

4

1 回答 1

2

将解码留给 XML 解析器;它会检测要使用的编解码器。打开文件而不转换为 unicode:

with open(fname) as xml:
    dom = parse(xml)

请注意使用标准函数open()而不是codecs.open().

这适用于任何XML 解析器;解析器的工作是从 XML 序言中确定使用什么编解码器来解析文档。如果没有序言,则默认为 UTF-8。

于 2013-07-16T13:05:30.590 回答