如何消除TT的"宽字符打印"警告?

pla*_*etp 11 unicode perl template-toolkit

每次运行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); 
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 8

在调用之前将其$tt->process()置于自动编码输出:

binmode STDOUT, ':utf8';
Run Code Online (Sandbox Code Playgroud)

编辑:正如daxim所提到的,可以使用TT的编码工具:

$tt->process($infile, $vars, '-', { binmode => ':utf8' })
Run Code Online (Sandbox Code Playgroud)

这依赖于广泛使用的约定,即'-'文件名STDIN在打开以供阅读时以及STDOUT打开以进行写入时为您提供.

编辑2:BTW,后一种方式在mod_perl(2.0.5)下似乎对我不起作用.