洛阳铲的日志

2007年11月22日

Apache乱码问题

Filed under: Apache,PHP — HackGou @ 00:09

很多时候,浏览器并不按照指定的编码来显示页面。 导致乱码。其实这和http头中的设置有很大关系:
Content-Type: text/html; charset=utf-8
当http头中有这一行的时候,浏览器总是按照这个头指示的编码来显示页面内容,
而忽略Meta tag中的设置。如果Meta和Content-Type 的charset一致时,一切都是正常的,
而一旦不一样,那就会出现问题。
而apache本身是可以通过AddDefaultCarset XXX来来设置 http头中的默认字符编码,
同时当apache和php在一起的时候,还有php.ini的一个设置会影响这个http头的默认编码:
default_charset = “utf-8”
而这个default_charset 的设置会覆盖apache的AddDefaultCarset配置,
当然也可以在每个php里面手动调用
header(“content-type:text/html; charset=xxx”)
来覆盖default_charset 的值,这么看来一共有四个地方 会对php的执行结果产生影响: 优先级别从高到低:
php的header(“content-type:text/html; charset=xxx”)函数
php.ini里面的default_charset 设置
httpd.conf 中的AddDefaultCarset设置
最后才是html代码中的:META tag
其实最简单的办法是把php.ini中的default_charset和httpd.conf中的AddDefaultCarset置空。 通过Meta tag来指定编码,header只是临时性的改变编码的最后关口。

Powered by WordPress