当我使用Simple::XML
转储xml时,我最终会找到包含转义字符的字符串,例如\x{e6}
。这是一个例子
#!/usr/bin/perl
use Data::Dumper;
use Encode;
$s="sel\x{e6}re";
decode_utf8($s);
print Dumper $s;
输出
$VAR1 = 'sel�re';
问题
如何将奇怪的角色变成UTF-8?
更新
这是完整的xml输出。 http://pastebin.com/Sitm01kh
更新2
正如评论中指出的那样,XML很好,但问题出现在我
my $ref = XMLin($xml, ForceArray => 1, KeyAttr => { Element => 'Id' });
print Dumper $ref;
答案 0 :(得分:1)
#!/usr/bin/perl
use DDP;
use XML::Simple;
my $xml = '<Element Id="496669" ParentId="495555" Name="Klasselærere" ContextName="01005 Advanced Engineering Mathematics 1 E15/Klasselærere" IsArchived="false" SubgroupCount="0" />';
my $result = XMLin($xml);
binmode(STDOUT, ":utf8");
print p($result)
产生以下输出
{
ContextName "01005 Advanced Engineering Mathematics 1 E15/Klasselærere",
Id 496669,
IsArchived "false",
Name "Klasselærere",
ParentId 495555,
SubgroupCount 0
}
Data :: Dumper本身与unicode很奇怪。使用Data :: Printer查看unicode字符
答案 1 :(得分:1)
我猜你的终端无法显示caracter \ xe6。
如果您使用的是Linux,请输入“locale”以查看终端的设置。
您可以尝试设置终端编码:
导出LC_ALL = utf-8