xhtmlの文字化けや表示エラーについて(PHP - simplateの場合)

PHPでhtmlファイルをxhtmlに変更したかったので、ヘッダーを下記のように変更したところ文字化けした。

<meta http-equiv="Content-Type" content="application/xhtml+xml; charset='Shift_JIS'" /><meta http-equiv="Content-Type" content="text/html; charset='Shift_JIS'" />

このサイトを見ると以下のような記述があった。LiveHTTPHeaders(Firefox 機能拡張)でHTTP ヘッダを表示する : 小粋空間

mb_output_handler に注意(文字化け)

PHP での開発において mb_output_handler(出力時の文字コードの変換を行ってくれる関数)を使うことが出来ない。
HTTP レスポンスヘッダーの Content-Type に application/xhtml+xml が記述されているときは、この関数は機能しないので使うことが出来ないので注意。(ようするに、XHTML を使おうとするときは、この関数は使えないということ)
http://showzine.info/blog/tag/xhtml/

私は、ini_set("mbstring.http_output", "sjis");を使っていたのだが、これも効かないようだ。

そこで、simplateを下記のように変更し、対応(smartyも同じ方法が使えるのだろうか?)。(1年以上運用している某サイトでも同じ方法が使われていたので、特に問題はないようだ)

$this->simplate->display($tpl_name);
↓
$str = mb_convert_encoding($this->simplate->fetch($tpl_name),'SJIS','EUC-JP');
echo $str;

ちなみに

&nbsp;

には対応していないブラウザもまだ多く、FireFoxではこれがあるとエラーが出て表示されません。

にほんブログ村 IT技術ブログへ
1票ポチッと押して下さい♪このブログのランキングが少し上がります。