字符编码问题导致网页在Firefox下显示乱码

转自:http://hi.baidu.com/lisongyuan1984/blog/item/f5006f8c856aff15b31bba4d.html

前一阵子偶然看到自己的一些网页在Firefox中显示乱码,但是在IE中完全正常,一直想解决这个问题。

我一直以为是网页的代码不够符合W3C标准,而Firefox对完全按照W3C标准来编代码的网页支持的更好,但是即便我尽可能的把代码改得符合 W3C标准,在Firefox下中文仍然显示为乱码。

页面源码显示如下:

连源码都出问题了?真 搞不明白怎么回事,就这样一直放着没有解决。

今 天我偶然发现,用IE查看页面源码的时候,右键-->查看源文件,启动记事本,选择“文件”-->“另存为”,在对话框的最下面有一个“编码 ”选项,我偶然的注意到那里是UTF-8,根据我的经验,那个编码选项多数情况下都是“ANSI”,在进行另存为操作的时候那里一般默认都是 “ANSI”,虽然我不明白“ANSI”是什么意思。

于是马上得到启发,想到我的网页在Firefox中显示乱码应该是跟网页源文件的字符编码有关。

我的网页顶部Meta标签里声明的是:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

字 符编码设置的是gb2312,而我当时在编辑源文件的时候可能是在一个编码已设置为UTF-8的记事本里面做的,为了方便,我经常随便打开一个网页,然后 用“查看源文件”启动记事本,如果当时那个网页刚好是UTF-8编码的话,那么记事本里面的字符也就继承了UTF-8编码,我再另存为保存成网页的时候, 也是默认的按照UTF-8编码来保存的。这样源文件是UTF-8编码,而网页头部声明的却是gb2312----我当然知道这两种编码是不同的,虽然我并 不懂两者究竟有什么区别----这样显然会冲突嘛,就显示乱码了!

浏览器是根据网页头部的charset=gb2312来选择网页的编码,但是源文件本 身却是UTF-8编码的,这样中文字符就会显示为乱码。这时手动的把浏览器的字符编码改成UTF-8,中文字符即可正常显 示,但是如果网页中还含有其他使用gb2312编码的框架<iframe>的话,那么框架页就会显示为乱码了。总之这种乱码问题极大的影响了 访客的正常浏览。

按照上面的思路把源文件按照ANSI编码重新保存一遍,一切正常了。

但是为什么只有firefox显示乱码,IE却没问题呢?可能firefox太挑剔了吧?简直吹毛求疵!IE就宽容的多,只要不是HTML基本语法 错误都能正常显示,还是IE好啊!兼容性最强!

参考资料

[1] gb2312 http://baike.baidu.com/view/25492.htm

[2] ANSI http://baike.baidu.com/view/185282.htm

[3] W3C http://baike.baidu.com/view/7913.htm


你可能感兴趣的:(字符编码问题导致网页在Firefox下显示乱码)