【发布时间】:2012-05-29 07:32:03
【问题描述】:
我正在抓取一个网站并从其 JSON 中收集信息。结果保存在哈希中。但是有些页面给了我“JSON 字符串中格式错误的 UTF-8 字符”错误。我注意到“cafe”中的最后一个字母会产生错误。我认为这是因为字符类型的混合。所以现在我正在寻找一种将所有类型的字符转换为 utf-8 的方法(希望有一种完美的方法)。我尝试了 utf8::all,它只是不起作用(也许我没有做对)。我是菜鸟。请帮忙,谢谢。
更新
好吧,在我阅读了 brian d foy 发布的文章“Know the difference between character strings and UTF-8 strings”之后。我用代码解决了问题:
use utf8;
use Encode qw(encode_utf8);
use JSON;
my $json_data = qq( { "cat" : "Büster" } );
$json_data = encode_utf8( $json_data );
my $perl_hash = decode_json( $json_data );
希望这对其他人有所帮助。
【问题讨论】:
-
另外,您可能会查看您的网络用户代理正在做什么,并告诉它不要解码正文。这应该为您提供原始八位位组,因此您不必对解码的内容进行编码。