最近把PHP升级到了PHP 5.6.10(原来是5.4)导致了我的部分项目出现了乱码(出现乱码的项目,编码是GBK),本以为是Apache的配置问题,因为我的Apache设置了DefaultCharset,最后发现其实不是Apache的配置问题,而是PHP 5.6把默认的字符集设置成了UTF-8导致的。 导致乱码的原因: PHP 5.6把默认的字符集设置成了UTF-8,导致了在接收请求的时候,HTTP Header内的Content-Type属性中charset的值始终为charset=utf-8,因为HTTP Header内的编码设置,优先级比页面内mata标签中的编码设置的优先级要高,所以无论页面是什么编码,浏览器始终识别为UTF-8。

这里有一篇比较详细的解释: > 页面乱码问题根源浅析 http://www.laruence.com/2008/04/17/110.html

解决方案:

修改php.ini配置文件,在该文件内找到

;default_charset = "UTF-8"

修改为

default_charset = ""

参考:
php.ini directives default_charset string http://php.net/manual/en/ini.core.php#ini.default-charset