我讨厌提出一个问题,这个问题之前无疑得到了十几次回答,但我发现编码问题令人困惑,并且我很难将其他人与我自己的问题相匹配。< / 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
我确定这里有一个微不足道的解决办法,但我很难过。我非常感谢您提供的任何帮助。
答案 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().')';