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;
ちなみに
には対応していないブラウザもまだ多く、FireFoxではこれがあるとエラーが出て表示されません。