首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将XML字符转换为utf8?

问如何将XML字符转换为utf8?
EN

Stack Overflow用户
提问于 2016-03-16 13:14:46
回答 2查看 390关注 0票数 1

当我使用Simple::XML转储xml时,我最终得到了包含转义字符(如\x{e6} )的字符串。下面是一个例子

代码语言:javascript
复制
#!/usr/bin/perl
use Data::Dumper;
use Encode;

$s="sel\x{e6}re";
decode_utf8($s);
print Dumper $s;

输出

代码语言:javascript
复制
$VAR1 = 'sel�re';

问题

我怎么才能让这个奇怪的角色进入UTF-8?

更新

以下是完整的xml输出。http://pastebin.com/Sitm01kh

更新2

正如注释中指出的那样,XML很好,但是当我

代码语言:javascript
复制
my $ref = XMLin($xml, ForceArray => 1, KeyAttr => { Element => 'Id' });
print Dumper $ref;

http://pastebin.com/7KDB50fd

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-16 13:46:13

代码语言:javascript
复制
#!/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)

产生以下输出

代码语言:javascript
复制
{
   ContextName     "01005 Advanced Engineering Mathematics 1 E15/Klasselærere",
   Id              496669,
   IsArchived      "false",
   Name            "Klasselærere",
   ParentId        495555,
   SubgroupCount   0
   }

数据:Dumper本身与unicode一起工作很奇怪。使用Data::打印机查看unicode字符

票数 1
EN

Stack Overflow用户

发布于 2016-03-16 13:50:05

我猜您的终端无法显示caracter \xe6 6。

如果您在linux上,输入“locale”以查看终端的设置。

您可以尝试这样设置终端编码:

出口LC=utf-8

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36036769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档