« どうしたいのっ | メイン | SprintF関数 「スペース」文字を補う »
2006年03月10日
smarty で UTF-8 表示
いろんなやり方があるんでしょうが・・・
私はこうやりました。
出力したいページの頭に、以下を挿入。
//↓テンプレートを読み込む前のフィルタ設定
$smarty->register_prefilter("pre01");
//↓吐き出す際のフィルタ設定
$smarty->register_postfilter("post01");
そのPHP内に、以下を挿入。ちなみに、テンプレートを、UTF-8で作成した場合に以下の記述です。テンプレートがEUCの場合には、pre01 の第3引数を変更する必要があります。なぜか、"auto" ではNGでした。。
function pre01($buff, &$smarty)
{
return mb_convert_encoding($buff,"EUC-JP", "UTF-8");
}function post01($buff, &$smarty)
{
return mb_convert_encoding($buff,"UTF-8", "EUC-JP");
}
当然、DBから値をとってきたらその値もUTF-8 にコンバートしないとなりません。
こんな関数をかましてあげればOKですね。
function convUtf8($val)
{
$enc = mb_detect_encoding($val, "auto");
return mb_convert_encoding($val,"UTF-8", $enc);
}
当然ですが、全てのページでUTF-8したい場合は、MySmarty.class に上記設定を追加してしまえば、いちいちプログラムごとに追加する必要がありませんので。
投稿者 taku : 2006年03月10日 12:33
トラックバック
このエントリーのトラックバックURL:
http://blog.noiri.net/cgi-bin/mt/mt-tb.cgi/57
このリストは、次のエントリーを参照しています: smarty で UTF-8 表示:
» Smarty インストール from Shoulder.jp
PHPのテンプレートエンジンである「Smarty(スマーティ)」をインストールした。
やり方は、以下の手順
1.1. [続きを読む]
トラックバック時刻: 2006年06月01日 15:55
