在安装了CentOS yum的Apache中,要添加到响应的媒体类型的字符集参数设置为UTF-8,因此即使元标记描述了UTF-8以外的字符集,浏览器也会忽略它Web应用程序和HMTL都是乱码。
因为乱码的原因是AddDefaultCharset指令设置为UTF-8 ,所以注释掉自己httpd.conf描述AddDefaultCharset的设置。
vi /etc/httpd/conf/httpd.conf
---------------------------
#AddDefaultCharset UTF-8
设置为中文GB2312
AddDefaultCharset GB2312
---------------------------
AddDefaultCharset其自身的默认值与Off通过注释掉Off设置相同。
Off如果你想澄清你做了什么,你应该写如下。
AddDefaultCharset Off
造成乱码的原因
让我们看看这个设置究竟发生了什么变化。表示AddDefaultCharset设置UTF-8和Off时响应头Content-Type的变化。
设置为UTF-8时
$ curl -I 192.168.5.10
HTTP / 1.1 200好的
日期:星期一,3月17日20XX 11:34:27 GMT
服务器:Apache
Last-Modified:周一,3月17日20XX 07:42:00 GMT
Accept-Ranges:字节
内容长度:125
连接:关闭
Content-Type:text / html; charset = UTF-8 <= charset始终显示
设置为关闭或注释时
$ curl -I 192.168.5.10
HTTP / 1.1 200好的
日期:星期一,3月17日20XX 11:34:41 GMT
服务器:Apache
Last-Modified:周一,3月17日20XX 07:42:00 GMT
Accept-Ranges:字节
内容长度:125
连接:关闭
Content-Type:text / html <= charset未显示
如果响应头Content-Type的字符代码是UTF-8 ,则浏览器会忽略HTML元标记中设置的字符代码,因此如果字符代码不匹配,则会出现乱码。 。