每次运行 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);
将其放在调用
$tt->process()
之前,以使输出自动编码:
binmode STDOUT, ':utf8';
编辑:正如daxim提到的,可以利用TT的编码设施:
$tt->process($infile, $vars, '-', { binmode => ':utf8' })
这依赖于广泛使用的约定,即
'-'
文件名在打开以进行读取时为您提供 STDIN
,在打开以进行写入时为您提供 STDOUT
。
编辑2:顺便说一句,后一种方法似乎在mod_perl(2.0.5)下对我不起作用。