2016/01/07
PHP5.6以上(PHP7含む)の場合、拡張子が.phpの場合で、文字コードがShift_JIS、またはEUC-JPの場合、PHPが絡んでいようがいまいが文字化けしてしまうようです。(要するにそのファイルにHTMLだけが記述されていたとしても)
もちろんmetaタグのContent-Typeで「charset=shift_jis」などを指定していたとしてもだから余計に厄介。
おそらくデフォルトcharsetがUTF-8に変わったせいだろうか。それにしてもこれはちょっとひどいな。。
metaタグやファイルの文字コードが間違いなくても文字化けするのでハマる可能性が高いと思う。
(あえてheaderで書いていないケースも多いと思うので ※特にPHPを書いていない場合はそもそも不要だったし)
解決法としては、単純にheader関数で明示的に文字コードを指定すれば解決できた。
以下1行をソース上の一番上の行(DOCタイプ宣言の更に上)に記述すればOK。
※EUC-JPの場合は適宜変更下さい。
ページが多い場合にはphp.iniの設定を変更するか、PHPのバージョンを5.5以下にするか、または100ページ以下くらいであれば、この際すべてのファイルの文字コードをUTF-8にしてしまうのも有りだと思います。(ただし何らかのシステムが入っている場合にはこの辺も考慮する必要があります)
まぁ時代の流れとしてUTF-8が標準となり、Shift_JISはPHPとの相性も非常に悪いため特に理由がなければ、Webで扱うファイルはすべてUTF-8で統一して運用するのが無難ということですね。
※まぁそんなことは分かっていてもそうもいかない状況も稀にあるんですがね・・・。