【发布时间】:2013-05-05 05:52:24
【问题描述】:
我在使用编译指示 use open qw(:std :utf8); 时遇到了 utf8::encode 的问题
示例
#!/usr/bin/env perl
use v5.16;
use utf8;
use open qw(:std :utf8);
use Data::Dumper;
my $word = "+банк";
say Dumper($word);
say utf8::is_utf8($word) ? 1 : 0;
utf8::encode($word);
say Dumper($word);
say utf8::is_utf8($word) ? 1 : 0;
输出
$VAR1 = "+\x{431}\x{430}\x{43d}\x{43a}";
1
$VAR1 = '+банк';
0
当我删除这个 pragma use open qw(:std :utf8); 时,一切正常。
$VAR1 = "+\x{431}\x{430}\x{43d}\x{43a}";
1
$VAR1 = '+банк';
0
谢谢你!
【问题讨论】:
-
使用
:std :utf8将UTF-8 层添加到STDOUT。因此最后一个say将尝试再次编码$word..
标签: perl utf-8 character-encoding