Как правильно печатать неанглийские символы в файл с Perl? - PullRequest
2 голосов
/ 19 января 2012

Я использую Perl для печати некоторых данных, прочитанных из одного файла в другой. Иногда я читаю неанглийскими символами, такими как акцентированные символы вроде é. Тем не менее, делая:

print FILE_HANDLER "... $variable ...";

не сохраняет акценты. На самом деле é распечатывается как «Ã ©».

Как я могу распечатать эти символы, чтобы они правильно сохранились? Для получения дополнительной информации файлы, которые я открываю и записываю, сделаны так:

open READ_FILE, "<", "file.xml" or die $!;
open WRITE_FILE, ">", "file.txt" or die $!;

Спасибо за вашу помощь.

1 Ответ

7 голосов
/ 19 января 2012

perldoc -f open говорит:

Вы можете (и обычно должны) использовать форму open с тремя аргументами, чтобы указать слои ввода / вывода (иногда называемые «дисциплинами»), чтобы применить к дескриптору, который влияет на обработку ввода и вывода (см. Open и PerlIO для более подробной информации). Например:

 open(my $fh, "<:encoding(UTF-8)", "filename")
 || die "can't open UTF-8 encoded filename: $!";

открывает файл в кодировке UTF8, содержащий символы Unicode; см. perluniintro

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...