кажется, что набор инструментов шаблона не обрабатывает кодировку должным образом.
Я передаю template->process
имя файла (где получить шаблон), ссылку на хеш (содержащий все параметры) и скалярссылка (куда поместить вывод), затем я возвращаю это и, в свою очередь, отображаю его пользователю.
Когда я даю ему строку с умлаутом, вывод html включает в себя черный ромб с белым вопросомОтметьте вместо каждой буквы (но правильное количество букв).Любой другой символ получается нормально.
Я использую предупреждение, чтобы распечатать строку, прежде чем я сделаю вызов template-> process, и на данный момент все нормально, насколько я могу судить, это во времяtemplate->process
назовите, что все превращается в мусор.
Есть идеи?Я пытался использовать ENCODING => "utf8"
так же, как и binmode => ":utf8"
, но ни один из них не влияет на вывод.
Вот мой код с некоторыми обрезанными жирными краями, чтобы показать мой вызов template-> process,обратите внимание, что если я пропущу {binmode => 'utf8'}
, это не даст никакого эффекта.
<put variables in hash referenced to by vars>
<print out variables in has referenced to by $var>
my $data;
$template->process( $self->filename, $vars, \$data, {binmode => ':utf8'}) || die "Template process failed: ", $template->error();
return $data;
решено Привет всем спасибо за ваши ответы, проблема оказалась в том, что после шаблонный процесс сделал свое дело, затем мы записали строку во временный файл перед выводом, поэтому нам также нужно было установить binmode для файла, код теперь выглядит так:
<put variables in hash referenced to by vars>
<print out variables in has referenced to by $var>
my $data;
binmode( STDOUT, ":utf8" );
$template->process( $self->filename, $vars, \$data, {binmode => ':utf8'}) || die "Template process failed: ", $template->error();
return $data;
Благодарю васвсе на ваше время :) 1026 *