我有一个相当简单的Perl脚本:
use JSON;
use open qw/ :std :encoding(utf8) /;
#my $ref = JSON::decode_json($json_contents);
my $path = "/home/chambres/web/x.org/public_html/cgi-bin/links/admin/booking_import/import/file.json";
my $json_contents = slurp_utf8_file($path);
my $ref = JSON->new->utf8->decode($json_contents);
sub slurp_utf8_file {
my @back;
#open my $in, '<:encoding(UTF-8)', $_[0] or die $!;
open my $in, "<$_[0]" or die $!;
while (<$in>) {
push @back, $_
}
close ($in);
return join("", @back);
}
文件在Notepad++中以UTF-8编码:
...然而当我运行我的脚本时,我得到:
perl test.cgi
Wide character in subroutine entry at test.cgi line 11.
第11行是:
my $ref = JSON->new->utf8->decode($json_contents);
我很困惑自己做错了什么。也许我只需要休息一下!非常感谢任何建议!
->utf8
呢? - Stefan Becker