lxml.etree.XMLSyntaxError,文档标记为 UTF-16 但具有 UTF-8 内容

Ali*_*aca 3 python xml lxml utf-8 utf-16

lxml.etree.XMLSyntaxError,文档标记为 UTF-16 但具有 UTF-8 内容

我在 python 中使用 lxml lib 时收到错误。其他解决方案/黑客正在将文件 php.ini 中的 utf-16 替换为 utf-8。解决这个问题的Pythonic方法是什么?

蟒蛇代码:

import lxml.etree as etree

tree =  etree.parse("req.xml")
Run Code Online (Sandbox Code Playgroud)

请求.xml:

<?xml version="1.0" encoding="utf-16"?>
<test 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
</test>
Run Code Online (Sandbox Code Playgroud)

len*_*enz 6

看一下XMLParser构造函数的文档:

>>> help(etree.XMLParser)
Run Code Online (Sandbox Code Playgroud)

在其他选项中,有一个encoding参数,它允许您“覆盖文档编码”,如文档所述。

这正是您所需要的:

parser = etree.XMLParser(encoding='UTF-8')
tree = etree.parse("req.xml", parser=parser)
Run Code Online (Sandbox Code Playgroud)

如果错误消息是正确的(即文档没有任何其他问题),那么我希望它能够工作。