网站程序编码gbk和utf8等的选择说明

作者:190 hihi 来源:ChinaZ源码报导 浏览: 2011-4-13 11:40:15 字号:
[摘要]现在的网站程序都会出好几种编码的版本,如utf8、gbk、big5等。特别是utf8和gbk两种编码,常常让新手站长无从下手。本讲述各种编码的区别和作用。

  现在的网站程序都会出好几种编码的版本,如utf8、gbk、big5等。特别是utf8和gbk两种编码,常常让新手站长无从下手。

  在中国区域内GB通用一些,而UTF8的国际通用一些。我们能够正常浏览到韩国、日本的网站,其实正常浏览的这些网站都是采用UTF8的格式。

  我们打开各大型网站现在普遍采用的都是 GB 格式,例如百度、QQ、163、discuz、phpwind等,而少部分使用UTF例如google。

  非特殊情况下很少有外文操作系统来访问一般的中文站点的,而当你规模大了后在转换也不迟。经常访问中文的外国朋友,他们一定会在自己的操作系统里面安装GB相关的支持插件或补丁的。所以这个不用担心。

GBK与UTF-8的区别

GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。
GBK包含全部中文字符;UTF-8则包含全世界所有国家需要用到的字符。
GBK是在GB2312基础上扩容后兼容GB2312的标准;UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
GBK是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大;UTF-8是国际编码,它的通用性比较好,外国人也可以浏览论坛。

  比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。 所以,对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。

  对于Discuz论坛来说,很多插件都只支持GBK的,如果需要装较多插件的论坛还是用GBK比较好,而对装较少插件且有特殊用户群的论坛用UTF8比较好。

  GB2312是GBK的子集,GBK是GB18030的子集。GBK是包括中日韩字符的大字符集合。如果是中文的网站推荐GB2312、GBK有时还是有一些问题。为了避免所有乱码问题,应该采用UTF-8,将来要支持国际化也非常方便。UTF-8可以看作是大字符集,它包含了大部分文字的编码。使用UTF-8的一个好处是其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字而不会出现乱码。

UTF8

UTF8并不算是一种电脑编码,而是一种储存和传送的格式,如前所述,每个Unicode/UCS字符都以 2或4个bytes来储存,看看以下的比较:

以"I am Chinese"为例以"我是中国人"为例
用ANSI储存:12 Bytes 用ANSI储存:10 Bytes
用Unicode/UCS2储存:24 Bytes + 2 Bytes(header) 用Unicode/UCS2储存:10 Bytes + 2 Bytes(header)
用UCS4储存:48 Bytes + 4 Bytes(header)用UCS4储存:20 Bytes + 4 Bytes(header)

  由此可见直接以Unicode/UCS的原始形式来储存是一种极大的浪费,而且也不利于互联网的传输(中文稍为合算一点)。

  有见及此,Unicode/UCS的压缩形式--UTF8出现了,套用官方网站的首句话『UTF-8 stands for Unicode Transformation Format-8. It is an octet (8-bit) lossless encoding of Unicode characters.』,由于UTF也适用于编码UCS,故亦可称为『UCS transformation formats (UTF)』

  UTF8是以8bits即1Bytes为编码的最基本单位,当然也可以有基于16bits和32bits的形式,分别称为UTF16和UTF32,但目前用得不多,而UTF8则被广泛应用在文件储存和网络传输中。

以下是一些统计资料,显示用UTF8来储存文件每个字符所需的平均字节:

  • 1.拉丁语系平均用1.1 Bytes;
  • 2.希腊文、俄文、阿拉伯文和希伯莱文平均用1.7 Bytes;
  • 3.其他大部份文字如中文、日文、韩文、Hindi(北印度语)用约3 Bytes;
  • 4.用超过4 Bytes的都是些非常少用的文字符号。

GB2312

  字符必须编码后才能被计算机处理。计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

  GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

  GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

  从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。

  有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

快捷键使用:上一页“←”,下一页“→”
内容导航
sssss
Tags: 编码   gbk   utf8  
责任编辑:190
编辑推荐排行