服务器上上了一个GBK的discuz,但是发现出来是乱码。查看一下编码,始终默认为UTF-8,手功选择为GB2312后,刷新一下或者点到其它页面,又变成UTF8了:(

检查页面代码,<meta http-equiv="Content-Type" content="text/html;charset=gbk">这句话已经放在最上面了,在所有中文字符之前,没有问题!开始怀疑是服务器配置问题。

检查apache2/conf/httpd.conf,没有发现强制UTF8的设置,也没有发现默认字符的设置。于是从其它机子的httpd.conf中Copy来了AddDefaultCharset GB2312,加了,还是不行。。。,快19点了,先回家再说。

回到家里发现,服务器上一个UTF-8的站首页乱码了。。。,赶紧在全局设置中把AddDefaultCharset GB2312去掉,想想把这句就加在那个GBK的站点配置里吧。

现在,那个GBK的站点访问还是乱码,建了一个test.htm,头部gbk,可以正常显示中文,但改为test.php后,就不正常了,看来php的配置有问题。

开始检查php.ini,在公司是搜索过的,没有发现有utf,现在再检查下,发现了default_charset="UTF-8",原来vi状态的搜索是区分大小写的。问题应该就在这里,把它改为空,重启Apache。GBK的站点访问正常了。

以为就这样解决了,又发现UTF8站点的htm页不正常了,默认为GB2312了,.php页正常。

想想我这个Blog空间是买的,编码是UTF-8的,访问正常,肯定有其它用户(应该是大部分用户)用的是GB2312的编码,也能正常,所以这个问题肯定是能够解决的。

再去httpd.conf上把AddDefaultCharset GB2312删除。
让朋友访问了下两个站点,终于两边都正常了:)

总结一下,apache的httpd.conf中的AddDefaultCharset可以设置为空,没有必要指定值,除非那台服务器上只有某编码的网站。php的php.ini中的default_charset也可以设置为空,只要程序在头部申明了编码,也就能正常的显示。