PHP工房トップ

HOME > News&Tips > PHP5.6以上(PHP7含む)でShift_JIS、EUCのPHPファイルが文字化けする

PHP5.6以上(PHP7含む)でShift_JIS、EUCのPHPファイルが文字化けする

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 header("Content-Type: text/html;charset=Shift_JIS");?>

ページが多い場合にはphp.iniの設定を変更するか、PHPのバージョンを5.5以下にするか、または100ページ以下くらいであれば、この際すべてのファイルの文字コードをUTF-8にしてしまうのも有りだと思います。(ただし何らかのシステムが入っている場合にはこの辺も考慮する必要があります)

まぁ時代の流れとしてUTF-8が標準となり、Shift_JISはPHPとの相性も非常に悪いため特に理由がなければ、Webで扱うファイルはすべてUTF-8で統一して運用するのが無難ということですね。
※まぁそんなことは分かっていてもそうもいかない状況も稀にあるんですがね・・・。



一覧へ



PHPメールフォーム(無料版)

PHPメールフォーム(有料版)

新着情報・更新履歴CMS(無料版)

投票・アンケートシステム(無料版)

テロップCMS(無料版)

写真ギャラリーCMS(無料版)

営業日カレンダーCMS(無料版)

営業日カレンダーCMS(有料版)

カレンダー予約フォーム(無料版)

カレンダー予約フォーム(有料版)

リンク集ページCMS(無料版)

アクセスカウンター(無料版)

ダウンロードカウンター(無料版)

メールフォームの各種カスタマイズならお任せ下さい
業務効率化が可能なPHPオリジナルCMS制作します

役立つかも?なもの

豆知識や役立ち事など

PHPについて

各種情報