我尝试读取一个a.txt文件,该文件是perl的unicode表示。 \ X {7ec8}
我使用以下perl代码test.txt来阅读。
binmode STDOUT, ":utf8";
while ( <> ) {
chomp;
print "$s_\n";
}
my $input = "\x{7ec8}";
print "$input\n";
我运行cat a.txt | perl test.pl,输出为
\x{7ec8}
终
这意味着perl代码无法识别来自a.txt的unicode表示,但可以在代码中识别。
答案 0 :(得分:3)
您还需要将STDIN
置于utf8模式:
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
while ( <> ) {
chomp;
say;
}
my $input = "\x{7ec8}";
print "$input\n";
输出:
终
终
另一个选择就是
use open qw(:utf8 :std);
以utf8模式打开所有文件句柄和STDIN / STDOUT / STDERR。请参阅perldoc open。
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use open qw(:utf8 :std);
while ( <> ) {
chomp;
say;
}
my $input = "\x{7ec8}";
print "$input\n";