Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析UTF-8XML文件_Python_Xml_Unicode_Utf 8 - Fatal编程技术网

Python 解析UTF-8XML文件

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,它就会工作。有没有一种方

我想用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-8XML文件?

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

with open(fname) as xml:
    dom = parse(xml)
注意使用标准函数
open()
而不是
codecs.open()


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

为了在答案中详细说明,OP问题是
minidom.parse
需要一个原始字节字符串,它将根据需要应用声明的编码,但它们正在传递一个字符字符串。。。然后它尝试解码已经解码的字符,但失败了。