2013-08-29 19:36:46
来 源
itjs.cn
Apache
本文介绍Apache服务器处理乱码问题的方法,希望对于初学Apache服务器相关的朋友有帮助,更多Apache安装、配置、报错处理等资源请本站内搜索。

在apache的配置文件httpd.conf中,或许我们会用到

AddDefaultCharset UTF-8

来设置所有主机或者某虚拟主机的字符编码。

这个设置会对本主机内的所有文件产生影响, 并且它的优先级高于主机网页文件内的:

<META http-equiv=Content-Type content=”text/html; charset=gbk”>

也就是说,如果由于某种原因,httpd.conf中设置了本站的字符集为utf-8

而你的网页字符集全都是gbk的,

即使你在网页中指明了charset=gbk

那么用浏览器打开你的网站,仍然会显示乱码。

几种情况:

1、页面没有指定charset , Apache配置defaultcharset gbk , 页面文件编码是utf-8。执行结果是页面乱码。这个几乎是肯定的,在页面没有meta指明charset,而服务器的 defaultcharset 又没有被注释掉,可以肯定页面是会乱码的,这个时候服务器的设置生效;

2、页面指定charset为utf-8, Apache配置defaultcharset gbk. 页面文件是utf-8。执行结果是页面乱码。这个就验证了当服务器的defaultcharset打开时,会忽略掉页面的编码设置;

3、PHP header申明 charset 为 utf8, Apache配置defaultcharst gbk,页面文件编码是utf8。执行结果是页面正常。这个说明header中指定的信息的优先级要高于服务器及浏览器的设置;

4、Apache设置DefaultCharset off。页面显示正常。

解决办法:

1 删除httpd.conf中的AddDefaultCharset

2 修改httpd.conf中的AddDefaultCharset为gbk

3 如果你使用的是虚拟主机,没有权限修改httpd.conf,那么可以在站点根目录里面创建一个.htaccess文件,写入以下内容:AddDefaultCharset off或者AddDefaultCharset GBK来解决

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。