こんな感じ
$smarty->register_outputfilter("filterSjis");
function filterSjis($buff, &$smarty)
{
return mb_convert_encoding($buff,"SJIS","UTF-8");
}
プリフィルタとポストフィルタはテンプレートに記述されている文字列を変換するだけで、DBなどから動的に出力する文字列には効かない。アウトプットフィルタの場合はブラウザへ出力する直前のデータをフィルタしてくれる。
これで無事解決。。。。と思ったのだけれど、このままでは出力されるヘッダがUTF-8のままのため、文字化けが発生してしまう。さて、どうしたもんか、、、と思いつつGoogleで調べてみたら「ini_set("default_charset", "Shift_JIS");」を入れれば解決できることがわかった。
これが最終形
$smarty->register_outputfilter("filterSjis");
ini_set("default_charset", "Shift_JIS");
function filterSjis($buff, &$smarty)
{
return mb_convert_encoding($buff,"SJIS","UTF-8");
}
Smarty インストール
返信削除PHPのテンプレートエンジンである「Smarty(スマーティ)」をインストールした。やり方は、以下の手順1.