【问题标题】:Reading an XML file with perl and XML::Simple, perl outputs non-english characters as hex使用 perl 和 XML::Simple 读取 XML 文件,perl 将非英文字符输出为十六进制
【发布时间】:2011-08-25 21:16:48
【问题描述】:

我正在尝试读取一个 XML 文件,并且只输出选定数量的字段,但是我遇到了两个问题(我认为是相关的),我在谷歌上搜索完全失败了。

我正在使用的 XML 文件包含许多非英语字符、äöåéœ 等...

当我运行 print Dumper($data); 我得到如下结果:

马尔贝克 Vi\x{f1}a Domingo F Sarmiento

当我尝试通读 XML 并输出特定字段时,这些十六进制符号变成问号:

马尔贝克 Vi?a Domingo F Sarmiento

有任何提示或至少是谷歌搜索的方向吗?

代码如下:

#!/usr/bin/perl -w
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;


# What file to use?
my $file = "systemet.xml";
# Read in the data
my $data = XMLin($file);
# Let's get some stuff!
foreach my $status (@{$data->{artikel}}) {
print $status->{namn} . "\n";
}

感谢您的帮助,如果我听起来有点无知,很抱歉,这可能是因为我是。

【问题讨论】:

  • 你正式成为我在世界上最喜欢的人之一!立即解决了我的问题,谢谢!
  • @bpg 也许你应该把它放在答案而不是评论中。

标签: perl


【解决方案1】:

试试这个

binmode(STDOUT, ":utf8");

并参考此线程How can I output UTF-8 from Perl?

【讨论】:

  • 正如我所说,这成功了!既然这行得通,那就是下一个突然出现的问题。
  • 我同意 Stew,我没有将其添加为您的答案。我这样做是为了方便其他 SO 用户偶然发现这个线程以寻找快速解决方案。此外,为了进一步帮助他们,您应该接受这个答案。我想我正在尝试找到一个快速的解决方案,如果我将我的解决方案作为可接受的答案然后作为评论找到,我会更有信心。
猜你喜欢
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
相关资源
最近更新 更多