2011-02-16 50 views
0

我尝试读取a.txt文件,该文件位于perl的unicode表示中。 \Perl读取perl代码表示文件

我用下面的perl代码test.txt来读取。

binmode STDOUT, ":utf8"; 
while (<>) { 
    chomp; 
    print "$s_\n"; 
} 
my $input = "\x{7ec8}"; 
print "$input\n"; 

我跑的猫A.TXT | perl的test.pl和输出

\x{7ec8} 
终 

这意味着Perl代码无法识别从A.TXT Unicode表示,但可以识别代码内部。

+1

那么你的问题是什么? – mob 2011-02-16 19:01:43

+0

你可以发布编译的代码吗?我假设你的意思是在你的循环中打印$ _ \ n“`。 – CanSpice 2011-02-16 19:37:37

回答

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); 
这将打开所有文件句柄

,并STDIN/STDOUT/STDERR,采用utf8模式。见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";