我讨厌问一个无疑已经被回答过十几次的问题,但我发现编码问题令人困惑,并且很难将其他人的问答与我自己的问题相匹配。
我正在在线从 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";
}
它会遇到如下所示的 json:"first_name":"Fu00e9lix","last_name":"Cat"
并像这样打印它们:FΘlix Cat
我确定这里有一个微不足道的修复,但我被难住了。我真的很感激你能提供的任何帮助。
你没有告诉 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().')';