テンプレートツールキットが正しくエンコーディングを処理していないようです。テンプレートツールキットの文字エンコーディング
ファイル名(テンプレートを取得する場所)、ハッシュリファレンス(すべてのパラメータを含む)、およびスカラーリファレンス(出力先を指定)を渡してから、それを返して順番に表示しますユーザー。
ウムラウト付きの文字列を入力すると、html出力には、すべての文字の代わりに白い疑問符(ただし、正しい文字数)の黒い菱形が含まれます。他のキャラクターはうまく出てきます。
テンプレート - >プロセスを呼び出す前に警告を使用していますが、この時点では、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;
私はあなたのすべてに感謝し、あなたの時間のために:)
おそらくutf8ではなくUTF-8を渡してみてください。時には重要です。例えば、http://jeremy.zawodny.com/blog/archives/010546.html – Hugmeir
UTF-8のテキストが文字化けしているのですか、ブラウザが正しいエンコーディングを選んでいないのですか? –
後者の場合は、どのようなエンコーディングを使用するのかブラウザにどのように伝えることができますか? HTMLテンプレートpro(私たちが移動しているシステム)を使用すると、文字が正しく表示されます。これは私がTTだと信じさせたが、私は間違っている可能性がある。私は明日の朝にどんな提案も試してみる必要があります。 – cjh