我有一个XML文件,我想分析: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'});
和它的工作
我的脚本解析一些XML(包含这样的字符)并生成另一个XML。另一个xml似乎格式不正确,因为解析器在该字符上失败。 – pacefist 2010-10-23 13:59:01
我以为xmlin在utf-8中返回了文本,并且用'encoding = utf-8'生成了我自己的xml文件。 – pacefist 2010-10-23 14:02:00