2014-03-11 10:42:48 (火)
PHP5.6.0alpha3を導入
php.ini-developmentをほとんど修正せず、動かしてみた。
文字化けするスクリプトが発生した。
原因は、php.iniのデフォルト値の変更で
default_charset = ""
から
default_charset = "UTF-8"
に変わっていた。
これは、
Content-type: header
で、送信されるためで、PHP5.6.0からは
default_charset = ""
は、非推奨とのこと。
各スクリプトで
ini_set('default_charset', 'SJIS');
の様に、設定すれば文字化けはなくなる。
HTTP/1.1では、
Content-type: header
に、従うことになっているようだ。
そのため
htmlのメタタグ
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
のcharsetは関係ない(無視する)
ini_set('default_charset', 'SJIS');
としなくても
header('Content-Type: text/html;charset=Shift_JIS');
でもいいが、バグ発生を考えると
スクリプトの先頭で
ini_set('default_charset', 'SJIS');
が、いいと考える