代码之家  ›  专栏  ›  技术社区  ›  planetp

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

  •  11
  • planetp  · 技术社区  · 14 年前

    每次运行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); 
    
    2 回复  |  直到 13 年前
        1
  •  8
  •   Community Michael Schmitz    7 年前

    把这个放在电话前 $tt->process() 要使输出自动编码:

    binmode STDOUT, ':utf8';
    

    编辑 :作为 daxim 提到,可以使用TT的编码设备:

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

    这依赖于广泛使用的惯例,即 '-' 文件名给了你 STDIN 当它被打开阅读时,以及 STDOUT 当它开始写作时。

    编辑2 :顺便说一句,在mod euperl(2.0.5)下,后一种方法似乎不适用于我。

        2
  •  1
  •   daxim e.dan    14 年前
    $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 .

    推荐文章