PHPは文字コードがshift jisで書いてはいけない。
当たり前のことらしいですね。
でも、場合によってはHTMLがshift jisで書かれていることも多々あると思います。
ちょうど今日そんな場面に直面していました。
今回とった方法は.htaccessで
mbstring.http_input
mbstring.http_output
の設定をShift jisにしました。
これは簡単に言うとinputされる文字の文字コードをShift jisからEUCに変換してくれるらしいです。
outputはその逆で、PHPから送り出すときにShift jisとして送り出してくれるそうです。
これでファイルがたとえEUC出掛かれていてブラウザの文字コードがShift jisになっていても文字化けないそうです。
しかし、そんなやり方も通用しない場合が…
ということで方法その2
ob_start()関数を使うそうです。
これは本来ブラウザへの出力をバッファにためて、変数に入れてくれるそうです。これを使って一気にmb_convert_encodingをつかってShift jisに変換して、ob_end_flush()を使って表示させてあげればOK。
詳しいことはマニュアルを確認してみよう。