如何消除 TT 的“打印中的宽字符”警告?

问题描述 投票:0回答:2

每次运行 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); 
perl unicode template-toolkit
2个回答
10
投票

将其放在调用

$tt->process()
之前,以使输出自动编码:

binmode STDOUT, ':utf8';

编辑:正如daxim提到的,可以利用TT的编码设施:

$tt->process($infile, $vars, '-', { binmode => ':utf8' })

这依赖于广泛使用的约定,即

'-'
文件名在打开以进行读取时为您提供
STDIN
,在打开以进行写入时为您提供
STDOUT

编辑2:顺便说一句,后一种方法似乎在mod_perl(2.0.5)下对我不起作用。


1
投票
$tt->process($infile, $vars, $outfile, { binmode => ':encoding(UTF-8)' })

这记录在

process
中。

© www.soinside.com 2019 - 2024. All rights reserved.