我有一个要解析的 xml 文件:
<?xml version="1.0" encoding="UTF-8" ?>
<tag>û</tag>
它被Firefox完美解析。但是 XML::Simple 会破坏一些数据。我有一个这样的 perl 程序:
my $content = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
$content .= "<tag>\x{c3}\x{bb}</tag>\n";
print "input:\n$content\n";
my $xml = new XML::Simple;
my $data = $xml->XMLin($content, KeepRoot => 1);
print "data:\n";
print Dumper $data;
并得到:
input:
<?xml version="1.0" encoding="UTF-8" ?>
<tag>û</tag>
data:
$VAR1 = {
'tag' => "\x{fb}"
};
这似乎不是我所期望的。我认为存在一些编码问题。难道我做错了什么?
UPD:我认为 XMLin 以 utf-8 格式返回文本(作为输入)。刚刚添加
encode_utf8($data->{'tag'});
它奏效了