LoginSignup
6
8

More than 3 years have passed since last update.

PHP 5.5 から 5.6 以上に上げると Shift_JIS や EUC-JP のサイトが文字化けする

Last updated at Posted at 2016-07-08

概要

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-Typetext/html; charset=UTF-8 が指定されていました。

HTTP ヘッダー

調べてみたところ、Content-Type で指定される文字コードは、php.ini の default_charset というパラメーターで指定することになっているようです。PHP 5.6 からデフォルト値が空から "UTF-8" に変更されています
今までは空だったため、特に Content-Typecharset が指定されることもなく、このような問題が発生しなかったのだと思います。

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8