Как я сохранил файл как UTF-8 от Perl?

Я пытаюсь создать/сохранить файлы HTML в Perl в UTF-8, но ничто я сделал до сих пор работы. Предыдущий ответ здесь на ТАК сказанном для использования binmode, таким образом, я попробовал это. Вот мой код:

open (OUT, ">$sectionfilename");
binmode(OUT, ":utf8");
print OUT $section;
close OUT;

Когда я открываю эти файлы в текстовом редакторе как Блокнот, они находятся все еще в кодировании ANSI. Что я делаю неправильно?

10
задан Community 23 May 2017 в 12:25
поделиться

2 ответа

Кажется, у меня работает:

C:\Documents and Settings>cat a.pl
$sectionfilename = "a.txt";
$section = "Hello \x{263A}!\n";

open (OUT, ">$sectionfilename");
binmode(OUT, ":utf8");
print OUT $section;
close OUT;    

C:\Documents and Settings>perl a.pl

C:\Documents and Settings>file a.txt
a.txt: UTF-8 Unicode text, with CRLF line terminators

Но когда я изменяю текст на написано на:

$section = "Hello";

и запускается:

C:\Documents and Settings>perl a.pl

C:\Documents and Settings>file a.txt
a.txt: ASCII text, with no line terminators
3
ответ дан 3 December 2019 в 21:21
поделиться

Текстовый редактор - плохой инструмент для изучения низкоуровневых вещей, таких как кодировки. Вместо этого используйте hexviewer / hexdumper. Современный способ написания вашего примера:

use autodie qw(:all);
open my $out, '>:encoding(UTF-8)', $sectionfilename;
print {$out} $section;
close $out;

autodie включает автоматическую проверку ошибок.

14
ответ дан 3 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: