现在的位置: 首页 > 综合 > 正文

web前端——编码时用utf-8编码还是gb2312编码?

2012年12月24日 ⁄ 综合 ⁄ 共 1619字 ⁄ 字号 评论关闭

    我曾经查找过很多资料,参差不齐,说什么的都有,真是众说纷纭啊,各自发表自己的看法,在下不才,也来晒一下自己对这两种编码的优缺点观点,顺便写上自己的一些心得。

     首先我要说的是UTF-8:

     UTF-8 编码是一种字符集的表达方式,我喜欢把它解释为:浏览器的和开发人员的中介经理人。是一种被广泛应用的编码,这种编码致力于把全球的语言纳入一个统一的编码,目前已经将几种亚洲语言纳入。UTF 代表 UCS Transformation Format.

     UTF-8 采用变长度字节来表示字符,理论上最多可以到 6 个字节长度。UTF-8 编码兼容了 ASC II(0-127), 也就是说 UTF-8 对于 ASC II 字符的编码是和 ASC II 一样的。对于超过一个字节长度的字符,才用以下编码规范:左边第一个字节1的个数表示这个字符编码字节的位数,例如两位字节字符编码样式为为:110xxxxx 10xxxxxx; 三位字节字符的编码样式为:1110xxxx 10xxxxxx 10xxxxxx.;以此类推,六位字节字符的编码样式为:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx。 xxx 的值由字符编码的二进制表示的位填入。只用最短的那个足够表达一个字符编码的多字节串。例如:

Unicode 字符: 00 A9(版权符号) = 1010 1001, UTF-8 编码为:11000010 10101001 = 0x C2 0xA9; 字符 22 60 (不等于符号) = 0010 0010 0110 0000, UTF-8 编码为:11100010 10001001 10100000 = 0xE2 0x89 0xA0

    1. 最简单的一个好处就是utf-8编码,基本上只要是windows操作系统都支持这种编码,而且大部分浏览器也能很好的解析这个编码,
    
     2. 从应用程序兼容上讲,utf-8编码能够让老程序(不支持unicode)能够处理。
因为utf-8的编码表示在0-127之间,和ASCII的范围相同。

     3. 从编码长度上说,2312中一个字符固定为两个字节。utf-8可变长。

     4. 未来趋势上说unicode是标准。utf-8是unicode转换表示法,兼容老程序。未来(个人认为)会逐渐被Unicode替换。 呵呵,扯到java上面了,不好意思。

     其次,GBK和gb2312编码

     通常我们会发现在一些小网站或者是一些企业网站中的代码会出现:<meta http-equiv="Content-Type" content="text/html; charset=gb2312">这个声明,它告诉浏览器说我这里输出的是gb2312啊,别弄错了,我是简体中文,不是UTF-8。从这里我们可以看得出,gb2312是和UTF-8一个级别的存在,他也是浏览器和开发人员的中介经理人。

     可以说,这两个是我用的最多的,大部分企业网站的编码集,我都用这两个来编写,为什么呢?因为对于用asp写程序的access表的中文内容输出的全是乱码,唉。从此以后对些中文的站点我是对UTF-8敬而远之,再不招惹它了。而gb2312就简单多了,去声明一下,我要输出的简体中文,ok全部搞定!但是有点遗憾的是,如果是国外流量的话,特没有安装过语言包,或者没安装包含gb2312的语言包,那么悲催了,轻者是提示他/她需不需要安装语言包,重者是打入十八层地狱,全部输出乱码!

    我经常用的也只用过这两种,但是觉得,这两种缺点都挺大的, 还是那句老话个人认为未来趋势上说unicode是标准。utf-8是unicode转换表示法,兼容老程序。而gb2312可能不能统治天下(国内区域使用绰绰有余)。

        (喜欢学习的和想与我探讨各种web知识的留下你的邮箱或联系方式,或者跟我发邮件747850255@qq.com转载请自觉附上转载地址,来自博客园“明年开奥迪”)

抱歉!评论已关闭.