Perl 如何消除TT';s";“印刷中的宽字符”;警告
每次运行CGI脚本时都会出现此警告(输出由Template::Toolkit呈现):Perl 如何消除TT';s";“印刷中的宽字符”;警告,perl,unicode,template-toolkit,Perl,Unicode,Template Toolkit,每次运行CGI脚本时都会出现此警告(输出由Template::Toolkit呈现): 在/usr/local/lib/perl5/site\u perl/5.8.9/mach/Template.pm第163行打印宽字符。 消除它的正确方法是什么 我使用以下配置创建tt对象: my %config = ( ENCODING => 'utf8', INCLUDE_PATH => $ENV{TEMPLATES_DIR}, EVAL_PERL
在/usr/local/lib/perl5/site\u perl/5.8.9/mach/Template.pm第163行打印宽字符。
消除它的正确方法是什么
我使用以下配置创建tt对象:
my %config = (
ENCODING => 'utf8',
INCLUDE_PATH => $ENV{TEMPLATES_DIR},
EVAL_PERL => 1,
}
my $tt = Template->new(\%config);
将其放在调用
$tt->process()
之前,以对输出进行自动编码:
binmode STDOUT, ':utf8';
编辑:如上所述,可以利用TT的编码功能:
$tt->process($infile, $vars, '-', { binmode => ':utf8' })
这依赖于广泛使用的约定,'-'
文件名在打开读取时为您提供STDIN
,在打开写入时为您提供STDOUT
编辑2:顺便说一句,在mod_perl(2.0.5)下,后一种方法似乎不适用于我
这在中有记录
$tt->process($infile, $vars, $outfile, { binmode => ':encoding(UTF-8)' })