芒果小站

  1. 全球最具业界良心的主机 - Linode

    毫无疑问,目前做得最好的主机供应商

    猛击这里查看

  2. 芒果小站目前使用的主机 - Linode

    客服响应快,随时退款,XEN 架构稳定

    猛击这里查看

  3. 最好的日本东京线路主机 - Linode

    可选弗里蒙特、达拉斯、亚特兰大、纽瓦克、伦敦、东京机房

    猛击这里查看

  • 1
  • 2
  • 3
切换到精简模式
10

一个编码引发的血案

作者 芒果/分类 代码/发布于 2011-10-08 22:52

因特网通过各种编码字符集解决了多语种的兼容,由于历史原因,绝大部分中文网站使用 GBK 或者 GB2312 两种编码。由于网络应用趋于复杂化,越来越多的 Ajax 数据交互,硬生生的 GBK 编码已经不符合时代要求,所以说来说去 utf-8 还是王道。

在 IE6/IE7 浏览器下,外部 javascript 文件编码和页面编码不一致时,会导致变量未定义。听起来很骇人听闻?假如页面是 GBK 编码,页面包含以下代码:

Foo.init({...});

而其引用的外部 JS 文件是 utf-8 编码,文件包含以下代码:

var Foo = {};

这样一来伟大的 IE6/IE7 就瞬间挂了。它会友好地提示你 Foo 变量未定义。

这一切的一切,只是因为一个文件编码问题。外部资源如果未指定编码,则 IE6/IE7 下默认以页面编码为准。解决方案很简单,在外部 JS 文件引入时候加上 charset=”utf-8″ 属性就可以了。

<script charset="utf-8" src="mangguo.js"></script>

反之,如果外部资源是 GBK 编码,使用 charset=”gbk” 即可。

版权所有,转载请注明出处。
转载自 <a href="http://mangguo.org/murder-caused-by-a-coding/" title="一个编码引发的血案" rel="bookmark">一个编码引发的血案 | 芒果小站</a>
如果喜欢这篇文章,欢迎订阅芒果小站以获得最新内容。

已经有 10 条群众意见

  1. 万戈 /2011-10-08 23:18

    友好地提示。。。汗一个,IE6/IE7就从来没友好过 回应

    #1
  2. 宅男 /2011-10-09 08:18

    博主文章名字取得好哟!逛逛。。。 回应

    #2
  3. 芒果宅男/2011-10-09 09:39

    必须的,哈哈 回应

    #3
  4. 减肥药排行榜 /2011-10-09 20:16

    有那么严重吗? 回应

    #4
  5. 经典笑话 /2011-10-12 19:23

    搜索过来的,东西写得真不错,支持博主! 回应

    #5
  6. 老文 /2011-10-21 15:43

    哈哈,我被标题骗进来了… 回应

    #6
  7. @万戈/2011-11-04 19:56

    不知道为什么 用这个主题出错 回应

    #7
  8. ipage /2011-11-14 10:03

    UTF-8还是主流些 回应

    #8
  9. CC霜 /2011-11-15 16:40

    UTF-8好,中英文情况下都能使用。 回应

    #9
  10. 冬季流行服装 /2011-11-26 10:34

    我们做事一定 要小心,细节很重要呀 回应

    #10

下面我简单说几句