Кодировка символов набора инструментов шаблона

похоже, что набор инструментов шаблона неправильно обрабатывает кодирование.

Я передаю шаблон-> процесс имя файла (где взять шаблон), хэш-ссылку (содержащую все параметры) и скалярную ссылку (куда поместить результат), затем я возвращаю это и в свою очередь отображая его пользователю.

Когда я даю ему строку с умляутами в ней, вывод html включает черный ромб с белым вопросительным знаком вместо каждой буквы (но правильное количество букв). Любой другой символ выводится нормально.

Я использую предупреждение, чтобы распечатать строку перед вызовом процесса template->, и на данный момент все в порядке, насколько я могу судить, во время template-> process называют, что все превращается в мусор.

Есть идеи? Я пробовал использовать ENCODING => "utf8" , а также binmode => ": utf8" , но ни один из них не повлиял на результат.

Вот мой код с некоторыми жира, вырезанного только для того, чтобы показать мой вызов процесса template->, обратите внимание, что если я пропущу {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;

Благодарю вас за ваше время :)

6
задан Code Magician 24 November 2011 в 10:43
поделиться