Unicode,ISO-10646,UTF8编码技术

Unicode,ISO-10646,UTF8编码技术


什么是Unicode?

  接触过电脑的朋友或多或少都碰到过乱码的问题,比如说在繁体系统下浏览一个简体或日文的网站, 显示的是一堆看不懂的中文字,为什么会这样呢?

  那是因为现在的中日韩内码都是使用2个bytes来表示一个字符,由于各有各的编码方式,所以就会出现冲突,例如:0xBBAF在Big5码下表示"赵"字,但在GB码下却表示"化"字,所以一旦没选好编码,就会出现一堆看不懂的天书.

  Unicode就是为了解决这种问题而产生的,它是以2bytes为一单位,为全世界各种文字给定一个唯一的编码,这样就可以避免各种编码方 案间产生冲突,从而杜绝乱码的产生,也就是说用一种编码就可以容纳世界各种文字,这不但有利于讯息的交流,也有利于编写支持多语言的程序.

  Unicode是以2Bytes即16bits来表示一个字符,即共可表达65535个不同的字符,现在最新版本是3.2.0 (2002年3月发布),4.0将于2003年9月公布。

  以中文为例,现在Unicode中的跟中日韩表意字符(CJK Ideograph)有关的编码范围是:
    0x4e00 至 0x9fa5 共20902个字
    0xf900 至 0xfa2d 共302个字 (扩展区)

什么是ISO-10646?

  ISO-10646的目的和原理跟Unicode差不多,都是以多字节来表示一个字符,藉此为全世界的文字符号给定一个唯一的编码。ISO-10646是由国际标准化组织(ISO)制订,而Unicode则由Unicode组织制订。

  ISO-10646定义的字集称为Universal Character Set(UCS),包括UCS2和UCS4,前者以2bytes(16bits) 为一单位,编码空间共65535个字符,而后者则以4bytes(32bits)为一单位,编码空间高达2,147,483,647!!足可以把古今中外 人类用过的所有文字符号收录其中!

  ISO和Unicode组织间已取得共识,故UCS2和Unicode的编码内容是一样,互相兼容且互相同步化,所以现在Unicode和UCS2可看成是同义词。


什么是UTF8?

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

  以"I am Chinese"为例
   用ANSI储存:12 Bytes
   用Unicode/UCS2储存:24 Bytes + 2 Bytes(header)
   用UCS4储存:48 Bytes + 4 Bytes(header)

  以"我是中国人"为例
   用ANSI储存:10 Bytes
   用Unicode/UCS2储存:10 Bytes + 2 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则被广泛应用在文件储存和网络传输中。


什么是Big5码?

  Big5码是港澳台等使用繁体中文地区最通用的中文编码,是1984年台湾资讯工业策进会根据《通用汉字标准交换码》制订的编码方案。为什么会叫大五码呢?好像是此方案跟当初五大台湾电脑公司有关,故名「大五码」。

  每个Big5码由2 Bytes组成,高位元组0x81~0xFE,低位元组0x40~0x7E和0xA1-0xFE,包括:
    常用字   (A440-C67E) 共5401个字
    次常用字  (C940-F9FE) 共7652个字
    特殊符号一 (A140-A3BF) 共408个字
    特殊符号二 (C6A1-C8FE) 共408个字
  两段汉字均基本以笔划数排序


什么是GB码?

  GB码全称是GB2312-80《信息交换用汉字编码字符集基本集》,1980年由大陆有关部门发布,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。

  每个GB码由2 Bytes组成,范围A1A1~FEFE
    A1-A9:符号区,包含682个符号
    B0-F7:汉字区,包含6763个汉字

  其中汉字部分以常用程度分为两级:一级字3755,以拼音排序,二级字3008,以偏旁排序。


什么是GBK码?

  由于GB2312-1980码收录的汉字只有六千多个,有很多人名地名繁体异体古体字都没有被收录,使用上十分不便,故有关部门于1995年制订了GBK码,中文名叫《汉字内码扩展规范1.0版》,向下兼容GB2312 码。

  每个GBK码由2 Bytes组成,范围8140~FEFE(除外xx7F),共23940个字,其中汉字有21003个,包含了 Unicode中所有中日韩汉字。


什么是GB18030码?

  全称是GB18030-2000,由大陆有关部门于公元2000年发布,采用1/2/4 Bytes混合编码,向下兼容GB2312和GBK码,很显然将会成为简体字地区未来的编码标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值