PHP 5.5 から 5.6 以上に上げると Shift_JIS や EUC-JP のサイトが文字化けする
概要
PHP 5.5 以下から、PHP 5.6 以上に PHP をアップグレードした際、HTTP ヘッダーに Content-Type: "text/html; charset=UTF-8"
が追加され、文字コードが Shift_JIS などのサイトは文字化けしてしまう場合があります。
これは、php.ini に default_charset
の指定がないことが原因です。default_charset = "Shift_JIS"
などを追加することで、ヘッダーの Content-Type
で指定される文字コードを変更できます。
詳細
Shift_JIS の Web サイトをホスティングしている、レンタルサーヴァーの PHP ヴァージョンを 5.5 から 5.6 に上げたところ、Web サイトに文字化けが発生してしまいました。
<head>
の中には <meta charset="Shift_JIS">
が入っているので、HTML 側の文字コード指定は問題ないようです。
一方、HTTP ヘッダーの方を確認してみると、Content-Type
に text/html; charset=UTF-8
が指定されていました。
調べてみたところ、Content-Type
で指定される文字コードは、php.ini の default_charset
というパラメーターで指定することになっているようです。PHP 5.6 からデフォルト値が空から "UTF-8" に変更されています。
今までは空だったため、特に Content-Type
で charset
が指定されることもなく、このような問題が発生しなかったのだと思います。
Author And Source
この問題について(PHP 5.5 から 5.6 以上に上げると Shift_JIS や EUC-JP のサイトが文字化けする), 我々は、より多くの情報をここで見つけました https://qiita.com/phanect/items/550bc0a1c671a4b9a720著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .