如何忽略由于LibXML中的错误编码而导致的解析错误?

如何忽略由于LibXML中的错误编码而导致的解析错误?,xml,perl,parsing,encoding,utf-8,Xml,Perl,Parsing,Encoding,Utf 8,我必须解析没有用正确编码标记的XML。具体地说,它包含一个德语u Umlaut,可能还有其他的,但没有或类似的。当我尝试使用以下行使用LibXML解析时: my $smDOM = $PRSR->load_xml(location => $smfile, no_blanks => 1) 我得到错误解析器错误:输入不正确UTF-8,指示编码 我也试过了 my $smDOM = $PRSR->load_xml(location => $smfile, no_blanks

我必须解析没有用正确编码标记的XML。具体地说,它包含一个德语u Umlaut,可能还有其他的,但没有或类似的。当我尝试使用以下行使用LibXML解析时:

my $smDOM = $PRSR->load_xml(location => $smfile, no_blanks => 1)
我得到错误解析器错误:输入不正确UTF-8,指示编码

我也试过了

my $smDOM = $PRSR->load_xml(location => $smfile, no_blanks => 1, encoding=> "iso-8859-1");
这会导致相同的错误

有没有办法禁用UTF-8作为默认编码? 还是在解析时忽略编码错误? 或者在调用或创建解析器时指定不同的编码? 顺便说一下,我不明白为什么一个简单的德国umlaut不适合UTF-8?
这里没有XML或HTML,XML::LibXML支持这两种格式

encoding参数严格适用于名为match/html/的函数,因为html文档的编码并不总是在html文档中找到。另一方面,如果不是UTF-8,则必须在文档中指定XML文档的编码

因此,您可以将现有内容转换为适当的XML。您可以将编码声明添加到XML文档中,也可以将其编码转换为UTF-8

use Encode qw( from_to );
from_to($xml, "iso-8859-1", "UTF-8");

这里没有XML或HTML,XML::LibXML支持这两种格式

encoding参数严格适用于名为match/html/的函数,因为html文档的编码并不总是在html文档中找到。另一方面,如果不是UTF-8,则必须在文档中指定XML文档的编码

因此,您可以将现有内容转换为适当的XML。您可以将编码声明添加到XML文档中,也可以将其编码转换为UTF-8

use Encode qw( from_to );
from_to($xml, "iso-8859-1", "UTF-8");

嗯,这是XML,它只是不正确的XML;。但我知道你的意思。顺便说一句,您的解决方案似乎运行良好。@jackthehipster,它与XML文档的定义不匹配。potayto,potahto。这是XML,它只是不正确的XML;。但我知道你的意思。顺便说一句,您的解决方案似乎运行良好。@jackthehipster,它与XML文档的定义不匹配。波塔托,波塔托。我不明白为什么简单的德国umlaut不适合UTF-8?根据你所说的iso-8859-1编码,你有字节FC。FC不是有效的UTF-8。u的UTF-8编码是c3bc字节。我不明白为什么一个简单的德语umlaut不适合UTF-8?根据你所说的iso-8859-1编码,你有字节FC。FC不是有效的UTF-8。u的UTF-8编码是字节c3bc。