2011-02-16 48 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";