2016-12-27 2 views
0

Я столкнулся с странной проблемой с 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, любые идеи о том, как это сделать?

+2

Можете ли вы создать [mcve], который демонстрирует вашу проблему? В противном случае нам просто нужно угадать, что не так с вашим кодом. – ThisSuitIsBlackNot

+0

Добавлен код, спасибо за напоминание. –

+1

UTF8 и окончания строки не связаны. Mac использует один CR. То, что вы видите, является дополнительным возвратом каретки. Вероятно, это не связано с TT. Можете ли вы также включить один из шаблонов и примеры данных, которые входят? Я считаю, что либо шаблон был отредактирован, чтобы включить дополнительные CR, либо ваш вход теперь имеет разрывы строк, где раньше их не было. – simbabque

ответ

Смежные вопросы