« どうしたいのっ | メイン | 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

コメント

コメントしてください




保存しますか?