テンプレート ツールキットがエンコーディングを適切に処理していないようです。
template->process
ファイル名 (テンプレートを取得する場所)、ハッシュ参照 (すべてのパラメーターを含む)、およびスカラー参照 (出力を配置する場所) を渡し、それを返し、ユーザーに表示します。
ウムラウトを含む文字列を指定すると、html 出力には、すべての文字の代わりに白い疑問符が付いた黒いひし形が含まれます (ただし、正しい文字数)。それ以外のキャラは問題なく出ます。
template->process を呼び出す前に警告を使用して文字列を出力していますが、この時点では問題ありtemplate->process
ません。呼び出し中に物事がガベージに変わることがわかります。
何か案は?ENCODING => "utf8"
同様に使用してみましbinmode => ":utf8"
たが、どちらも出力に影響しません。
これは、私のテンプレート->プロセスへの呼び出しを示すためだけに脂肪の一部を取り除いた私のコードです。省略し{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;
お時間をいただきありがとうございました:)