在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来解决
php下载中文乱码的解决办法云服务器可以干嘛挂云服务器解决Linux下Mysql5.7忘记密码问题【马鞍山网站建设】企业是通过模板还是定制来进行网站建设?腾讯云服务器选择什么镜像上周星期五你们那边的专员给我打电话说是要把我们的营业执照重新腾讯云的服务器买那个区的好点