• ベストアンサー

HTML::Templateでutf-8のテンプレートを読み込むと文字化けしてしまいます

HTML::Templateでutf-8のテンプレートを読み込むと、テンプレートに書いた日本語部分が文字化けしてしまいます。 以下のようにテンプレートに渡したパラメーターは文字化けしていません。 $template->param(TITLE => 'タイトル'); 解決策はありますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • maura
  • ベストアンサー率46% (48/104)
回答No.2

文字化け確認できました。 2箇所コメントアウトして、Utf8で保存すると 文字化けしませんでした。 これで困る状況があったら教えてください。 use strict; use warnings; # use utf8; use HTML::Template; # binmode STDOUT, ":utf8"; my $title = 'タイトル'; my $template = HTML::Template->new(filename => 'test.tmpl'); $template->param(TITLE => $title); print "Content-Type: text/html\n\n", $template->output; exit;

abiru
質問者

お礼

ありがとうございます。 文字化けが解消しました。

その他の回答 (1)

  • maura
  • ベストアンサー率46% (48/104)
回答No.1

以下のソースをUtf8で保存して実行したのですが 文字化けになりません。 どうなソース、どんなテンプレートで 文字化けするのでしょうか? use HTML::Template; @tmp = <DATA>; my $template = HTML::Template->new(arrayref => \@tmp); $template->param(TITLE => "タイトル"); print "Content-Type: text/html\n\n", $template->output; __DATA__ 日本語テンプレート Utf-8 です タイトル:<TMPL_VAR NAME="TITLE">

abiru
質問者

補足

ありがとうございます。 -----cgiここから----- #!/usr/local/bin/perl use strict; use warnings; use utf8; use HTML::Template; binmode STDOUT, ":utf8"; my $title = 'タイトル'; my $template = HTML::Template->new(filename => 'test.tmpl'); $template->param(TITLE => $title); print "Content-Type: text/html\n\n", $template->output; exit; -----ここまで----- -----テンプレートここから----- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><TMPL_VAR NAME=TITLE></title> <body> ここは日本語です。 </body> </html> -----ここまで----- 以上で、「ここは日本語です。」が文字化けします。 よろしくお願いします。