Как я устраняю “Широкий символ TT в печати” предупреждение?

У меня есть это предупреждение каждый раз, когда я выполняю свой сценарий CGI (вывод представляется Шаблоном:: Инструментарий):

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); 
11
задан planetp 18 March 2010 в 09:09
поделиться

2 ответа

Поместите это перед вызовом $ tt-> process () для автоматического кодирования вывода:

binmode STDOUT, ':utf8';

Изменить : Как daxim , можно использовать средства кодирования TT:

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

Это основано на широко используемом соглашении, согласно которому имя файла '-' дает вам STDIN , когда он открыт для чтение и STDOUT , когда он открыт для записи.

Edit 2 : Кстати, последний способ, похоже, не работает для меня с mod_perl (2.0.5).

8
ответ дан 3 December 2019 в 10:25
поделиться
$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 .

1
ответ дан 3 December 2019 в 10:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: