Smartyを携帯に対応させようとすると、どうしてもSJISの問題が発生する。
「{」「}」がSJISのコードに含まれるため、テンプレートはSJISでは書けない。
そこで、Smartyのoutputfilterを使用した。

1
2
3
4
5
6
7
8
9
10
11
12
<?php
//
// 画面出力時に、テンプレートをUTF-8からSJISに変換する。
//
function filterUTF8ToSJIS($buff, &$smarty) {
    return mb_convert_encoding($buff,"SJIS","UTF-8");
}
 
$smarty= new Smarty();                              //Smartyオブジェクト生成
$smarty->register_outputfilter("filterUTF8ToSJIS"); //フィルターの登録
ini_set("default_charset", "Shift_JIS");            //PHPの設定default_charsetにSJISを設定
?>