> CentOS > CentOS故障 >

CentOS里Apache强制UTF-8乱码的解决

 

今天购买了PhotonVPS中的XEN VPS给自己用,弱弱的鄙视一下BurstNet的VPS,购买了19.95刀的,2000GB流量的VPS,居然还不能接受我少量的下载请求,直接老是断掉我的VPS。等我停止下载就一切好了……算了,已经向BurstNet提出取消这台VPS了。这次尝试使用PhotonVPS,也是第一次选择XEN构架的VPS。具体会怎样呢,还是用段时间再说吧。

按部就班的选了CentOS作为系统之后,我把原来的网页放上去进行测试。之前的网页都是gb2312编码格式的,每个页面都带有HTML的meta标签说明本页使用的是gb2312编码(DW自带的那段代码)。结果用Firefox、IE、Opera三个浏览器访问都是乱码。这简直太奇怪了!明明我浏览器里编码是选择的“自动选择”的,按道理来说浏览器应该读取HTML页面的meta标签,按照GB2312编码显示网页,可是这些浏览器都无一例外的自动选择了UTF-8!查看网页源代码,HTML的meta头还是标记的charset=gb2312,并没有变成utf-8。奇怪了,难道是CentOS的Apache强制将网页编码改成了UTF-8?

抱着这样一种心态,跑到搜索引擎上一查询,嘿,还真有这样的情况。部分VPS提供的CentOS默认是开启了强制将页面编码转换成UTF-8的功能的。一旦开启了此功能,不管HTML中原来的meta标签中的charset,浏览器将会一律以UTF-8形式渲染,于是导致了乱码的产生。

知道原因就好办了,这是Apache的一个参数“AddDefaultCharset”导致的。我们来更改下Apache的配置文件,让这个参数变为OFF即可。

输入:

#vim /etc/httpd/conf/httpd.conf

找到原来的

AddDefaultCharset UTF-8

将它改为

AddDefaultCharset OFF

输入wq保存并退出vim后,使用重载命令或者重启Apache即可生效,这里我选择了重启Apache:

#/etc/init.d/httpd restart

再到浏览器中浏览网页,一切正常,问题解决!

(责任编辑:IT)