11

每次我运行我的 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); 
4

2 回答 2

10

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

binmode STDOUT, ':utf8';

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

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

这依赖于文件名在打开读取和写入时'-'为您提供的广泛使用的约定。STDINSTDOUT

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

于 2010-03-18T09:11:58.000 回答
1
$tt->process($infile, $vars, $outfile, { binmode => ':encoding(UTF-8)' })

这记录在http://search.cpan.org/perldoc?Template#process%28%24template%2C_%5C%25vars%2C_%24output%2C_%25options%29中。

于 2010-03-18T12:09:05.430 回答