裏紙に書く程度の内容

metaタグの文字コード指定でハマる

phpで作ったサイトを別のサーバに移行する際、文字化けにハマったのでメモ。 元サイトはshift-jisで構築されており、新しいサイトにphpファイルをそのまま移してブラウザで確認したら文字化け。 ブラウザのエンコード見ると”自動判別”となっており、これをshift-jisにすればきちんと表示される。 というわけで、metaタグの charaset を疑ったんだけどきちんと書いてある。 <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> で、ググってみたらこちらに行き着く。 PHPの文字化けを本気で解決する – ぎじゅっやさん

default_charsetはデフォルトの文字コードのことではない。 非常に誤解しやすい内容。 default_charsetというパラメータはご存じの人も多いと思う。 それに大抵の初心者本にはこれを設定するように書いてあるが、 むしろ逆である。 default_charsetとは 出力時にHTTPヘッダとして送信する文字コード名 のこと。

なるほど。 というわけでレスポンスヘッダを確認してみると Content-Type:text/html; charset=UTF-8 になってる。 元サーバをもう一度確認してみると.htaccessで

php_value default_charset Shift_JIS

の設定が。 これを新サーバにも追加したらヘッダはきちんと Content-Type:text/html; charset=Shift_JIS になり、文字化けも解消。

URABLO
広告
Index
広告