MT UTF-8 显示的问题

| 1 TrackBack

在新的Web 服务器上遇到了 UTF-8 的页面乱码问题.

问题是这样的: 迁移到新的Web服务器上之后,发现我的 MT 发布之后(包含中文)从浏览器查看是乱码.必须要从浏览器端手工指定一下编码为 UTF-8 才可以正常显示.而我的主页面 页面代码是用的 GB2312.不存在这个问题. 另外一个比较奇怪的是我的 MT 后台管理显示的中文都是正常的.而 Blog 前台页面都不正常.

我开始以为是 mt.cfg 设置的问题.于是修改 mt.cfg 的发布编码为 gb2312.可这样后台显示就有问题了.真是一波未平一波又起.于是我恢复到以前的状态,开始对比后台的页面和前端的页面差异并反复测试没有结果.接着查看 Apache 的 httpd.conf(我登陆不到主机上,这个是 cometrue 给我的参考).发现 其中的全局设定了 default charset 为gb2312 . 这个时候找 cometrue 又找不到.对 Apache 又不是非常熟悉,郁闷的睡去.

第二天一早看到 车东 在线,赶紧问问他.车东告诉了我一个小技巧:wget -S 来获取响应 code.自己虽然也常用wget ,不过对这个参数倒是第一次用.果真,从服务器端来的响应代码告诉我默认编码是 GB2312 .

MSN 联系 cometrue ,请他在dbanotes这个虚拟主机一项加上一条:AddDefaultCharset off . Apache的手册有如下解释:

当回应信息中没有在 HTTP 头中包含任何关于内容类型的参数时,此指令将会指定一个字符集的名字并添加进去。这将覆盖在文档体中通过 META 标签指定的字符集。AddDefaultCharset Off这样的设置将会禁用此功能。AddDefaultCharset On将根据此指令的需要启用Apache内部的默认字符集——iso-8859-1。

因为 MT 的模板机制控制的非常好.每个页面都有指定字符集的Meta 标签。所以这样带来了最大的灵活性。Google搜索了一下,看到有的的经验是指定 AddDefaultCharset gb2312 .这样扩展性就不够好。一些其他字符集的页面就会给读者带来阅读障碍。其实这个问题在我第一次用MT的时候也遇到过,当时歪打正着,糊里糊涂的没注意这个细节。当然,对 http 的机制如果再熟悉一些可能就会直接定位了。

再次谢谢车东的提示!

1 TrackBack

Ping Back来自:blog.csdn.net Read More

关于本文

This page contains a single entry by Fenng published on July 15, 2005 8:35 PM.

Blog 归来记 was the previous entry in this blog.

升级了 Lilina is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.