每次运行CGI脚本时都会收到此警告(输出由Template :: Toolkit呈现):
Wide character in print at /usr/local/lib/perl5/site_perl/5.8.9/mach/Template.pm line 163.
消除它的正确方法是什么?
我使用此配置创建tt对象:
my %config = (
ENCODING => 'utf8',
INCLUDE_PATH => $ENV{TEMPLATES_DIR},
EVAL_PERL => 1,
}
my $tt = Template->new(\%config);
答案 0 :(得分:8)
在调用$tt->process()
之前将其设置为自动编码输出:
binmode STDOUT, ':utf8';
修改:提到daxim,可以使用TT的编码工具:
$tt->process($infile, $vars, '-', { binmode => ':utf8' })
这依赖于广泛使用的约定,'-'
文件名在打开阅读时为您提供STDIN
,在打开文字时为STDOUT
提供{{1}}。
编辑2 :BTW,后一种方式在mod_perl(2.0.5)下对我来说似乎不起作用。
答案 1 :(得分:1)
$tt->process($infile, $vars, $outfile, { binmode => ':encoding(UTF-8)' })