• ベストアンサー

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

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

  • abiru
  • お礼率67% (37/55)
  • Perl
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • 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> -----ここまで----- 以上で、「ここは日本語です。」が文字化けします。 よろしくお願いします。

関連するQ&A

  • HTMLの文字化け

    自分で立ち上げたサーバへWindoswで作成したHTMLをアップしてブラウザから表示の確認をしてみたところ、日本語が文字化けてしまいました。 ヘッダーには <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> として、文字コードをUTF-8にしてあるのですが、この部分を <meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" /> とShift-JISにしてみると、日本語の文字化けが解消します。 できればcharset=UTF-8の状態で文字化けせずに表示してくれるようにしたいのですが・・・ どなたか原因がお分かりになる方いらっしゃいましたら、ご教授のほどお願い致します。 テキストエディタはK2Editorを使用しており、「保存時の文字コードと改行種類の変更」でHTMLファイル自体の文字コードは「Shift-JIS」、改行コードは「CRLF」としております。 サーバは、CentOS5.4を使用しており、 コマンドで # printenv | grep LANG の結果は、 LANG=ja_JP.UTF-8 となっております。

    • ベストアンサー
    • HTML
  • UTF-8のサイトがWillcomのみで文字化け

    携帯をメインターゲットにしたサイトを作っていますが、Willcomのみで文字化けが発生します。 色々調べると、WillcomはShift_JISにしか対応していないとか、いや、UTF-8にも対応しているとか、メールに関しての記述はあるのですが、Webサイトに関しては文字化けしています。 ちなみに、ヘッダーは以下のように記述しています。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=utf8"> <title>*****</title> </head> また、メールに関してはUTF-8はきれいに表示されています。

  • bloggerで文字化け

    blogger(http://www.blogger.com/)のテンプレートに日本語を書くと文字化けします。 対応策はありますか? 以下の二つは書いています。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD// HTML 4.0 TRANSITIONAL//JP"> <META HTTP-EQUIV="Content-Type" CONTENT=Text/HTML; Charset=Shift_JIS>

  • utf-8でメールを送信すると件名が文字化け

    Perlでメールフォームを作成しております。 今後のこともあってUTF-8でファイル、HTMLの出力をおこなっております。 なにかとutf-8便利でさくさくと問題なく作成していたのですがメール送信の肝心な部分で問題が出てきました。 送信先はiモードで506iです。 メールのヘッダーを以下のようにして送ると件名の日本語がどうしても文字化けします。本文はしません。アウトルックエクスプレス6.0では文字化けしません。YahooWebメールは文字化けしました。 Reply-To: $adminmail Errors-To: $adminmail To: $user_mail From: $adminmail Subject: $subject content-transfer-encoding: 7bit Content-type: text/plain; charset=utf-8 ・携帯がutf-8に対応していないメーラーなんだろうと思いますがなぜ本文は文字化けしないんでしょうか。 ・件名を文字化けをしないようにする方法はありますでしょうか?(ファイルの保存形式はutf-8を変えずに)

    • ベストアンサー
    • CGI
  • HTMLの文字化けについて

    HTMLの文字化けについて クライアントPC(WindowsVista)で作成したHTMLファイルをサーバ(CentOS5.4)にアップして、ブラウザから確認してみたところ、文字化けを起こしてしまいました。 ローマ字は問題ないのですが、日本語が文字化けしてしまっており、表示がめちゃくちゃになってしまっています。 HTMLはK2Editorにて作成して、文字コードはShift-JIS、改行コードはCRLFとしております。 しかし、文字化けした状態でブラウザの文字エンコーディングをEUC-JPに変えて再度読み込んでみたところ、文字化けせずに表示されます。 サーバ側の文字コードは、 # vi /etc/sysconfig/i18n LANG="ja_JP.EUC-JP" と設定し、デフォルトのUTF-8からEUC-JPに変えております。 なので、もしかしたらサーバ側の文字コードとHTMLの文字コードが何か関係しているのかと私は思うのですが・・・ 文字化けの原因がお分かりになる方いらっしゃいましたら、ご教授のほどお願い致します。

    • ベストアンサー
    • HTML
  • UTF-8 コードでのmailtoの文字化け

    HPをつくったのですが、(HTMLのエンコードはUTF-8です。) mailtoにsubjectを追記してメールフォームを作成しました。ですが、件名のところがどうしても文字化けしてしまうので、文字をエンコードしたものを貼り付けて何とか対応しました。しかし、ウィンドウズXPまでの古いブラウザでは大丈夫なものの、VISTAでは文字化けしてしまうようです。 どうしてこうなってしまうのでしょうか?outlookなどのバージョンの問題なのでしょうか?それともOS? わかりません。理由をご存知の方、また解決策をご存知の方、どうぞ教えてください。 あと、こんなこと問題外といわれるかもしれませんが、UTF-8を単純にShift-JISに置換したのですが、レイアウトとうすべてがぐちゃぐちゃになってしまいました。たくさんのページをUTF-8からShift-JISに変換しても良い方法というのはないのでしょうか?この点も併せて回答お願いいたします。

    • ベストアンサー
    • HTML
  • UTF-8だと文字化けしてします。

    UTF-8だと文字化けしてします。 phpを利用しています。 UTF-8でphp.iniを設定したのですがphpを表示させると文字化けしてしまいます。 エンコードで日本語選択をすると普通に表記されるのですが・・・。 HTMLだと問題はありません。 これをUTF-8の状態で表示させることは出来ますでしょうか? 初心者ゆえ、ご教授願えれば幸いです。 下記サイトになります。 http://irisdesign.main.jp/office/

  • 文字化けが直りません。

    どうしてもUTF-8を指定すると文字化けしてしまいます。ご指導お願いします。 検索して調べたのですがわかりませんでした。 ブラウザーの設定等も必要なのでしょうか? ちなみにshift_jisにすれば文字化けしません。 以下ヘッダー部分です。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>TOPページ</title> </head> 以上、よろしくお願いします。

    • ベストアンサー
    • HTML
  • 文字化け 発生はutf-8 

    文字化け 発信元使用言語がutf-8で発生。  日本語 ISO 2022ーjpでの発生はありません。

  • UTF-8ファイルを文字化けなく表示したい

    Windows7+IE8(version8.0.7600)を使っています。 UTF-8で作成したファイルをブラウザで開くと日本語が文字化けするため、タスクバーの表示--エンコードでその都度シフトJISに転換する必要があり、面倒です。 UTF-8のファイルを自動的に文字化けしない日本語で表示させる方法はないでしょうか?

専門家に質問してみよう