使用perl解码unicode转义字符

2024-03-21

我讨厌问一个无疑已经回答过十几次的问题,但我发现编码问题令人困惑,并且很难将其他人的问答与我自己的问题相匹配。

我正在从在线 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":"F\u00e9lix","last_name":"Cat"并像这样打印它们:FΘlix Cat

我确信这里有一个微不足道的修复,但我很困惑。我非常感谢您能提供的任何帮助。


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

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

where XXX是终端期望的编码。

在 Unix 机器上,你通常需要

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

在 Windows 机器上,您通常需要

use Win32 qw( );
use open ':std', ':encoding(cp'.Win32::GetConsoleOutputCP().')';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用perl解码unicode转义字符 的相关文章

随机推荐