上周飞龙新版上线的时候,出现了一个问题由于原来的页面是用的GBK编码的。新版的面页使用了utf-8编码的。晚上部署的时候发现utf-8编码的全部都成乱码了。这个乱码是因为浏览器用gbk解析utf-8的网页的。手动选择一下用utf-8编码就正常的了。刚开始还以为是utf-8页面的问题。看html源码。里面有utf-8的头申明。看jsp里面也有的。为什么Apache就是不用utf-8发送给浏览器呢?
后来找到httpd.conf.发面里面的AddDefaultCharset设置的是
AddDefaultCharset=GBK
没办法先修改成UTF-8试试
AddDefaultCharset=UTF-8
这样的话utf-8的页面好了。可是gbk的又不行了。真是怪了。后来发现把这个设置成off就可以了。
AddDefaultCharset=off
一查Apache的参考手册,原来是这样的。
AddDefaultCharset 指令
| 说明 | 当应答内容是text/plain或text/html时,在HTTP应答头中加入的默认字符集 |
|---|---|
| 语法 | AddDefaultCharset On|Off|charset |
| 默认值 | AddDefaultCharset Off |
| 作用域 | server config, virtual host, directory, .htaccess |
| 覆盖项 | FileInfo |
| 状态 | 核心(C) |
| 模块 | core |
当且仅当应答内容是text/plain或text/html时,此指令将会在HTTP应答头中加入的默认字符集。理论上这将覆盖在文档体中通过<meta>标签指定的字符集,但是实际的行为通常取决于用户浏览器的设置。AddDefaultCharset Off 将会禁用此功能。AddDefaultCharset On 将启用Apache内部的默认字符集iso-8859-1 。您也可以指定使用在IANA注册过的字符集名字中的另外一个charset 。比如说:
AddDefaultCharset utf-8
AddDefaultCharset只 应当在如下情况下使用:所有文本资源都使用同一种确定的字符集,且分别标记他们的字符集非常麻烦。一个这样的例子是向包含动态内容的资源中添加字符集参数 (比如先前遗留的CGI脚本),这样可能会因为在输出中包含用户提供的数据而导致跨站点脚本攻击。但是请注意:更好的解决办法是修改或删除这些脚本,因为 设置了默认的字符集以后将会使得浏览器的字符集自动探测功能失效。
Like others
- subversion 出现 Repository moved permanently to 'xxx' please relocate 的错误
- 升级到Ubuntu 8.04 不能启动的问题[更新]
- 解决Gentoo下ssh不能添加已访问的主机到信任列表的问题
- 关于compass,lucene高亮的比较完美的解决方案
- 解决Compass,Lucene高亮的问题
- 解决Deluge不能启动的问题
- 在Freebsd6.2下架设Apache2.2+Subversion1.4.3+Trac0.10.4作为版本控制缺陷跟踪系统
- 将 locale 从 zh_CN.GB2312 转到 zh_CN.UTF-8 的一些问题和解决方法[转]
- Ubuntu下Eva和Skype的输入法Scim问题
- TOMCAT 5: 关于Connector的URIEncoding属性[转]

