我必须解析没有标记正确编码的XML(在XML::LibXML
中)。具体来说,它包含德语ü
变音符号(可能还有其他符号),但没有<?xml version="1.0" encoding="iso-8859-1" ?>
等。当我尝试使用此行解析LibXML:
my $smDOM = $PRSR->load_xml(location => $smfile, no_blanks => 1)
我收到错误parser error : Input is not proper UTF-8, indicate encoding !
。
我也尝试了
my $smDOM = $PRSR->load_xml(location => $smfile, no_blanks => 1, encoding=> "iso-8859-1");
导致相同的错误。
答案 0 :(得分:4)
你所拥有的不是XML或HTML,XML :: LibXML支持的两种格式。
encoding
参数严格用于名称匹配/html/
的函数,因为HTML文档的编码并不总是在HTML文档中找到。另一方面,如果XML文档不是UTF-8,则必须在文档中指定的编码。
因此,您将所拥有的内容转换为适当的XML。您可以将编码声明添加到XML文档,也可以将其编码转换为UTF-8。
use Encode qw( from_to );
from_to($xml, "iso-8859-1", "UTF-8");