【发布时间】:2016-12-27 18:54:31
【问题描述】:
我在使用适用于 Perl 的模板工具包时遇到了一个奇怪的问题。我一直在使用它来生成一些使用 utf8 编码的模板的自述文件,今年早些时候,生成的自述文件很好,并且是 utf8 编码的 Dos\Windows 样式,以 CR\LF 作为行结尾。不知何故,我的代码发生了一些变化,现在它以 utf8 的 Macintosh 风格生成自述文件,以 CR\CR\LF 作为行尾,这反过来又在我生成的自述文件中产生了很多不必要的间距。
代码如下:
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 风格的方法,您有什么想法吗?
【问题讨论】:
-
您能否创建一个minimal reproducible example 来证明您的问题?否则我们只需要猜测你的代码有什么问题。
-
添加代码,谢谢提醒。
-
UTF8 和行尾无关。 Mac 使用一个 CR。你看到的是一个额外的回车。这可能与TT无关。您能否还包括其中一个模板和示例数据?我相信要么编辑了模板以包含其他 CR,要么您的输入现在在以前没有的地方有换行符。
-
我的模板文件只有一个 CR,我的输入也是如此,其他没有任何改变。就在几个月前,Windows 系统上的输出是正确的,Windows 系统中发生了一些变化,将输出更改为多了一个 CR。我不知道是什么变化导致了这种情况。
-
如果您认为您的系统发生了变化,那么恐怕我们无法帮助您诊断它。
标签: perl templates encoding utf-8