ユーザ用ツール

サイト用ツール


perl:tt

Template Toolkit

Perlのテンプレートエンジン

文字化け防止

文字化け防止の一例

  • テンプレートファイルをUTF8で書き、newするときにENCODINGにutf8を指定してUTF8フラグを立てる
  • テンプレートパラメータにはUTF8フラグ付きのデコード済み文字列を渡す
    • フォーム等の入力値に対して、全てUTF8フラグを立てる。
    • スクリプトファイルもUTF8で書き、use utf8 するとスクリプトに直接書かれたリテラルはフラグ付きになる
  • 書き出す時にbinmodeでエンコーディングを指定、ここで変更することで、shift_jisで出す事もできる
$template = Template->new({ ENCODING => "utf8" });
 
use utf8;
my $result;
$template->process("テンプレートパス", { hoge => "ああああ" }, \$result) or die $template->error;
binmode STDOUT, ":utf8";
#binmode STDOUT, ":encoding(euc-jp)";
print $result;

CGI.pmのフォームの入力値をUTF-8セット

for my $p($cgi->param) {
    my @v = map { Encode::decode_utf8($_) } $cgi->param($p);
    $cgi->param($p, @v);
}

CGI.pmで受けたパラメータを一度にUTF8に対応にする - 蜘蛛の糸をつむぐには…

perl/tt.txt · 最終更新: 2011/01/14 08:24 by 127.0.0.1