Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198826
  • 博文数量: 69
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 720
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-03 11:35
文章分类

全部博文(69)

文章存档

2011年(13)

2010年(46)

2009年(10)

我的朋友

分类:

2010-07-01 11:09:43

 

 Gen100701: Unicode, Utf8和字符编码其它


@http://zcatt.cublog.cn

Acronyms

UCS       Universal Character Set, a large character set defined by ISO/IEC 10646-1.

 

Refs

1.

2.信息交换用汉字编码字符集 基本集>,1981.5.1,国家标准总局,中国标准出版社

3. 信息技术 通用多八位编码字符集>,1993.12.24,国家技术监督局,中国标准出版社

4.信息交换用汉字编码字符集 基本集的扩充>.

 

ISO 10646

ISO 10646是国际标准化组织制定的一套国际编码标准,这个标准含盖了世界各种主要语言中的字符,包括中文简繁体,指定了统一的内码。

ISO10646国际编码标准的发展情况

1993年首个版本〈ISO/IEC 10646-1:1993〉, 20,902个表意文字

2000年发布更新版〈ISO/IEC 10646-1:2000〉,新增扩展区A6,582个表意文字,共27,484个表意文字

2001年发布〈ISO/IEC 10646-2:2001〉,作为对2000版的补充,新增扩展区B42,711个表意文字,计共70,000个表意文字。其中包含了〈康熙字典〉, 〈汉语大字典〉,和〈汉语大词典〉内的汉字。

2004年发布的〈ISO/IEC 10646:2003〉合并了

 

表意文字是指字形与字义具有关系的文字。中文字符属于表意文字。

中文字符在ISO10646中被划分到三个主要编码区:中日韩表意文字区(CJK Unified Ideographs Block),中日韩表意文字区扩展区A(CJK Unified Ideographs Extension A Block)和中日韩表意文字区扩展区B(CJK Unified Ideographs Extension B Block)。前两个区中使用16Bit表示,B区使用32Bit表示。

 

UNICODE

统一码是由Unicode学术学会(Unicode Consortium)制定的字符编码系统。Unicode学术学会的成员主要是电脑软硬件厂商。UnicodeISO有紧密的合作,Unicode可以被看作是ISO10646的实践版。因此,支持Unicode的产品也支持ISO10646.

Unicode统一码的发展情况

2000年推出Unicode 3.0,收录49,194个字符,包括27,484个东亚表意字符。对应

2001年推出Unicode 3.1,新增44,946个字符,其中42,711个是表意字符,计94,140个字符,表意字符超过70,000个。

2002年推出Unicode 3.2,新增1,1016字符,但表意字符没有增加。

2004年推出Unicode4.0,新增1,226个字符,表意字符没有增加。对应

UTF-8

ISO/IEC 10646Unicode定义了几种编码格式:UTF-8UCS-2 UTF-16UCS-4 UTF-32。每一个编码由一个或几个编码单位(encoding unit)组成。在这几种格式中仅有UTF-8使用的编码单位是一个字节(octet)。

 

Char. number range (hex)

UTF-8 octet sequence (binary)

0000 0000-0000 007F

0xxxxxxxx

0000 0080-0000 07FF

110xxxxx 10xxxxxx

0000 0800-0000 FFFF

1110xxxx 10xxxxxx 10xxxxxx

0001 0000-0010 FFFF

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

 

 

一个例子

Unicode十六进制

Unicode二进制

UTF8二进制

UTF8十六进制

UTF8字节数

B

00001011

00001010

B

1

9D

00010011101

11000010 10011101

C2 9D

2

A89E

10101000 10011110

11101010 10100010 10011110

EA A2 9E

3

 

编码步骤

1.    根据上表决定编码的字节数n

2.    生成每字节的高位,包括首字节的前m位(m=1 when n=1; m=n+1 when n=2,3,or 4,以及其他自己的头2位。

3.    由低向高填充表中的x位。

解码步骤

1.    初始化2进制数为0。要求至少21bit可用。

2.    根据首字节和每字节的前几位决定UTF-8的字节数。

3.    有低到高的将表中的x位填充到2进制数中。

UTF-8的优势

1.  US-ASCII兼容

2.  容易与其他编码转换

3.  首字节表明了字符的长度

4.  字节(octet)C0C1F5 to FF不会出现

5.  字符流容易定界

6.  UTF-8字串的词法大小顺序保持不便。

 

GB2312-80

GB2312-80是中国国家汉字信息交换用编码,由国家标准总局发布,198151日实施。

GB2312收录简化汉字及符号、字母、日文假名等共7445个字符,其中汉字6763个。 GB2312采用两个字节表示一个字符,习惯上第一个字节称做‘高字节’,第二个字节称做‘底字节’。GB2312将字符分为94个区,对应高字节;每个区94个位,对应低字节,两个字节的值分别为区号值和位号值加3220H),因此也称区位码。01-09区为符号、数字区,16-87区为汉字区、10-1588-94区是空白区。汉字被分为两级, 第一级3755个,位于16-55区,按拼音字母/笔形顺序排列;第二级3008个,位于56-87区,按部首/笔画顺序排列。GB2312最多表示6763个汉字。

 

GB18030-2000

GB18030-2000是继GB2312-1980GB13000-1993之后最重要的汉字编码标准,未来我国计算机系统必须遵循的基础性标准之一。GB18030收录了27484个汉字,总编码空间超过150万个码位。

GB18030采用单字节、双字节和四字节三种方式对字符编码。单字节使用0x000x7F码位(对应ASCII)。双字节部分,首字节码位从0x810xFE,尾字节码位分别是0x400x7E0x800xFE。四字节部分的第一、三字节编码码位是0x810xFE 第二、四字节编码码位是0x300x39

GB18030的双字节部分收录了包括GB13000.1全部CJK汉字20902个,有关标点符号、表意文字描述符13个、增补的汉字和部首/构件80个、双字节编码的欧元符号等。四字节部分收录了上述双字节字符之外的,包括CJK统一汉字扩充A在内的GB13000.1中的全部字符。


 

 Locations of visitors to this page

阅读(1509) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~