使用perl

时间:2016-05-29 21:09:09

标签: perl unicode

我讨厌提出一个问题,这个问题之前无疑得到了十几次回答,但我发现编码问题令人困惑,并且我很难将其他人与我自己的问题相匹配。< / p>

我在网上从json文件中提取信息,而我的perl脚本并没有正确处理unicode转义字符。

脚本看起来像这样:

use LWP::Simple;
use JSON;
my $url = ______;
my $json = get($url);
my $data = decode_json($json);
foreach my $i (0 .. $#{data->{People}}) {
   print "$data->{People}[$i]{first_name} $data->{People}[$i]{last_name}\n";
}

它会遇到如下所示的jsons:"first_name":"F\u00e9lix","last_name":"Cat"并按照以下方式打印它们:FΘlix Cat

我确定这里有一个微不足道的解决办法,但我很难过。我非常感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:4)

你没有告诉Perl如何编码输出。你需要添加

use open ':std', ':encoding(XXX)';

其中XXX是终端期望的编码。

在unix框中,您通常需要

use open ':std', ':encoding(UTF-8)';

在Windows框中,您通常需要

use Win32 qw( );
use open ':std', ':encoding(cp'.Win32::GetConsoleOutputCP().')';