Perl чтение файла с представлением Perl Unicode - PullRequest
0 голосов
/ 16 февраля 2011

Я пытаюсь прочитать файл .txt, который находится в представлении perl в юникоде.\ 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 не может распознать Unicode-представление из a.txt, но может распознать внутри кода.

1 Ответ

3 голосов
/ 16 февраля 2011

Вам также необходимо перевести 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";  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...