Python 解析UTF-8XML文件
我想用minidom解析一个文件:Python 解析UTF-8XML文件,python,xml,unicode,utf-8,Python,Xml,Unicode,Utf 8,我想用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,它就会工作。有没有一种方
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-8XML文件?将解码留给XML解析器;它将检测要使用的编解码器。在不转换为unicode的情况下打开文件:
with open(fname) as xml:
dom = parse(xml)
注意使用标准函数open()
而不是codecs.open()
这适用于任何XML解析器;解析器的工作是从XML序言中确定用于解析文档的编解码器。如果没有序言,则默认使用UTF-8。为了在答案中详细说明,OP问题是
minidom.parse
需要一个原始字节字符串,它将根据需要应用声明的编码,但它们正在传递一个字符字符串。。。然后它尝试解码已经解码的字符,但失败了。