Perl使用perl unicode表示读取文件

时间:2011-02-16 18:56:47

标签: perl string unicode

我尝试读取一个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表示,但可以在代码中识别。

1 个答案:

答案 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";