Я столкнулся с странной проблемой с Template toolkit для Perl. Я использовал его для генерации некоторых файлов Readme с использованием шаблонов, которые были закодированы в utf8, в начале этого года, файл readme, который был сгенерирован, был прекрасным и был в стиле Dos \ Windows для кодировки utf8, а CR \ LF - в качестве окончаний строки. Как-то в моем коде что-то менялось, и теперь он генерирует файлы readme в стиле Macintosh utf8 с CR \ CR \ LF в качестве окончаний строки, что, в свою очередь, делало много ненужных интервалов в моих сгенерированных файлах Readme.Perl - Template toolkit utf8 encoding OS option
Кодекс ниже:
my $readme_tmpl = "README_tmpl.tt";
if($os_type eq "LINUX") {
$readme_tmpl = "README_tmpl_linux.tt";
}
my $data_dir = File::Spec->catdir($self->data_dir(), 'BuildSomething');
$data_dir =~ s/\\/\//g;
my $template = Template->new(INCLUDE_PATH => $data_dir);
my %readme_params;
$readme_params{build_app_name} = $pub_env->{BUILD_APP_NAME};
$readme_params{project_name} = $self->project();
$template->process($readme_tmpl, \%readme_params, $readme_file);
Где $ readme_file путь, где новый файл будет.
Я ищу способы изменить его обратно в кодировку utf8 в формате Dos/Windows, любые идеи о том, как это сделать?
Можете ли вы создать [mcve], который демонстрирует вашу проблему? В противном случае нам просто нужно угадать, что не так с вашим кодом. – ThisSuitIsBlackNot
Добавлен код, спасибо за напоминание. –
UTF8 и окончания строки не связаны. Mac использует один CR. То, что вы видите, является дополнительным возвратом каретки. Вероятно, это не связано с TT. Можете ли вы также включить один из шаблонов и примеры данных, которые входят? Я считаю, что либо шаблон был отредактирован, чтобы включить дополнительные CR, либо ваш вход теперь имеет разрывы строк, где раньше их не было. – simbabque