前端 · 2012 年 2 月 16 日

ie中utf8和utf-8的区别

这几天被gbk和utf8的编码弄的头都大了,
网站换空间,想把以前的gbk的程序换成utf8的~
本来认为很容易的事情,结果弄了几天。。。
刚才把模板和样式全部换成utf8的~结果发现还是乱码;
又把数据库转格式折腾了下还是不行;
把phpcms重装N遍,还是不行;

后来强制性的在静态页面把页面转成utf8的,大部分才正常,
但是很多数据还是有乱码现象,
样式在ie下也错乱,
怎么调都调不过来,
我就纳闷了,怎么同样的代码、同样的样式怎么一个正常,一个乱成这样,
而火狐、谷歌、苹果浏览器全部正常,
只有ie内核的七零八落的,可想而知ie有多么垃圾了…………

静下来想想还是编码的问题,
我几乎把整个网站都翻了一遍,确定没有gbk的字眼……但任就乱码……
心里骂了ie它八辈祖宗了……

今天心血来潮又准备倒腾,
无意中在后台看到报c00ce56e错误,当时心里就咯噔一下,有报错就说明有希望了。
于是网上so了下,还真找到一篇说c00ce56e错误的;

大致是这样的:

IE真是强大的浏览器,最近做的Ajax应用每次在IE下都运行不了,报错是这样一个神奇的c00ce56e。上网Google后得到了M$网站的一个说明,http://support.microsoft.com/kb/304625/zh-cn。大致是说,由于编码错误,M$不能识别XMLHttpRequest的内容。至于解决办法,上面也没有细说。后来想想,是说了也看不懂。

折腾了一中午,才知道原来是因为IE不认识utf8或者ISO8859_1,IE只认识utf-8和ISO8859-1,千万不要小看那一-。我以前一直困惑utf8和utf-8有什么区别,但是一直都没有遇到实际的问题,几乎所有的程序都既认识utf8又认识utf-8。而IE的使用的Mlang.dll中终于成了第一个不认识utf8的软件。把charset一改,一切都迎刃而解了。

还是要感谢IE,让我们注意细节,增加实战开发经验。

于是我到后台程序中果然找到有个地方果然写的utf8,
当时改的时候真没想到这“-”的差别。
修改、更新、一切完美ing……