2007年3月27日星期二

字符集的发展--摘抄

1. 编码问题的由来,相关概念的理解1.1 字符与编码的发展从计算机对多国语言的支持角度看,大致可以分为三个阶段:
阶段一:
系统内码 ASCII
说明 计算机刚开始只支持英语,其它语言不能够在计算机上存储和显示。
系统 英文 DOS

阶段二:
系统内码 ANSI编码(本地化)。
说明 为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 \'中\' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。
系统 中文 DOS,中文 Windows 95/98,日文 Windows 95/98

阶段三:
系统内码 UNICODE(国际化)
说明 为了使国际间信息交流更加方便,国际组织制定了 UNICODE 字符集,为各种语言中的每一个字符设定了统一并且唯一的数字编号,以满足跨语言、跨平台进行文本转换、处理的要求。
系统 Windows NT/2000/XP,Linux,Java

2. 字符,字节,字符串理解编码的关键,是要把字符的概念和字节的概念理解准确。这两个概念容易混淆,我们在此做一下区分:

字符
人们使用的记号,抽象意义上的一个符号。
\'1\', \'中\', \'a\', \'$\', \'¥\', ……


字节
计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间。
0x01, 0x45, 0xFA, ……


ANSI字符串
在内存中,如果“字符”是以 ANSI 编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI 字符串或者多字节字符串。
中文123(占7字节)


UNICODE字符串
在内存中,如果“字符”是以在 UNICODE 中的序号存在的,那么我们称这种字符串为 UNICODE 字符串或者宽字节字符串。
L中文123(占10字节)

没有评论: