字符编码方式介绍及编码方式测试

上传人:洪易 文档编号:40360643 上传时间:2018-05-26 格式:DOC 页数:6 大小:41.50KB
返回 下载 相关 举报
字符编码方式介绍及编码方式测试_第1页
第1页 / 共6页
字符编码方式介绍及编码方式测试_第2页
第2页 / 共6页
字符编码方式介绍及编码方式测试_第3页
第3页 / 共6页
字符编码方式介绍及编码方式测试_第4页
第4页 / 共6页
字符编码方式介绍及编码方式测试_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《字符编码方式介绍及编码方式测试》由会员分享,可在线阅读,更多相关《字符编码方式介绍及编码方式测试(6页珍藏版)》请在金锄头文库上搜索。

1、字符编码方式介绍及编码方式测试字符编码方式介绍及编码方式测试第一部分第一部分 编码方式介绍编码方式介绍一、一、ASCII 编码:编码:美国标准信息交换标准码 (American Standard Code for Information Interchange, ASCII)在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有 0 和 1 两种状态。一个字节(byte)共由八个二进制位来组成,共有 256 种状态,从 0000000 到 11111111。阿拉伯数字、英文字母、标点符号等这些字符,怎么定义才能让计算机识别呢?因为计算机只识别二进制位 0 和 1,所

2、以以上这些字符就必须与二进制位(0 和 1)建立关系,才能让计算机识别。60 年代初,计算机界制定了一套统一的字符编码,来表示字符与二进制位之间的关系。这种统一的字符编码就叫做 ASCII 编码。ASCII 码一共规定了 128 个字符的编码,比如空格是 32(二进制 00100000),大写的字母 A 是 65(二进制 01000001)。这 128 个符号(包括 32 个不能打印出来的控制符号),只占用了一个字节的后面 7 位,最前面的 1 位统一规定为 0。在英语国家,128 个 ASCII 编码足以表达所有字符,但其它非英语国家,字符不是由英文字符组成,这样就需要增加编码以表达这些字符

3、,对于超过 128 个字符的编码被称为非 ASCII 编码。比如:在中国,我们用简体中文,字符编码方式为 GB2312。二、二、Unicode 编码:编码:看到上面的介绍后,我们了解了最早编码是 ASCII 码。它只用 7 个二进制位来表示,由于那个时期生产的大多数计算机使用 8 位大小的字节,因此用户不仅可以存放所有可能的 ASCII 字符,而且有整整一位空余下来。如果你技艺高超,可以将该位用做自己离奇的目的:WordStar 中那个发暗的灯泡实际上设置这个高位,以指示一个单词中的最后一个字母,同时这也宣示了 WordStar 只能用于英语文本。由于字节有多达 8 位的空间,因此许多人在想:

4、“呀!我们可以把 128255 之间的编码用做个人的应用目的。”问题在于,同时产生这种想法的人相当多,而且在 128255 之间的各个位置上应该存放什么这一问题上,真是仁者见仁智者见智。事实上,只要人们开始在美国以外的地方购买计算机,那么各种各样的不同 OEM 字符集都会进入规划设计行列,并且各人都会根据自己的需要使用高位的 128 个字符。如此一来,甚至在同语种的文档之间就不容易实现互换。 ASCII 可被扩展,最优秀的扩展方案是 ISO 8859-1,通常称之为Latin-1。Latin-1 包括了足够的附加字符集来写基本的西欧语言。最后,这个人参与的 OEM 终于以 ANSI 标准的形式

5、形成文件。在 ANSI 标准中,每个人都认同如何使用低端的 128 个编码,这与 ASCII 相当一致。不过,根据所在国籍的不同,处理编码 128 以上的字符有许多不同的方式。这些不同的系统称为代码页。同时,甚至更为令人头疼的事情正在逐步上演,亚洲国家的字符表有成千上万个字符,这样的字符表是用 8 位二进制无法表示的。该问题的解决通常有赖于称为 DBCS(double byte character set,双字节字符集)的繁杂字符系统。不过,仍然需要指出一点,多数人还是姑且认为一个字节就是一个字符,以及一个字符就是 8 个二进制位,并且只要确保不将字符串从一台计算机移植到另一台计算机,或者说一

6、种以上的语言,那么这几乎总是可以凑合。当然,只要一进入 Internet,从一台计算机向另一台计算机移植字符串就成为家常便饭了,而各种复杂状况也随之呈现出来。令人欣慰的是,Unicode 随即问世了。Unicode 字符集(简称为 UCS),国际标准组织于 1984 年 4 月成立 ISO/IEC JTC1/SC2/WG2 工作组,针对各国文字、符号进行统一性编码。1991 年美国跨国公司成立Unicode Consortium,并于 1991 年 10 月与 WG2 达成协议,采用同一编码字集。目前Unicode 是采用 16 位编码体系,其字符集内容与 ISO10646 的 BMP(Bas

7、ic Multilingual Plane)相同。Unicode 于 1992 年 6 月通过 DIS(Draf International Standard),目前版本 V2.0 于 1996 公布,内容包含符号 6811 个,汉字 20902 个,韩文拼音 11172 个,造字区 6400 个,保留 20249 个,共计 65534 个。Unicode 编码后的大小是一样的.例如一个英文字母 “a“ 和 一个汉字 “好“,编码后都是占用的空间大小是一样的,都是两个字节!Unicode 可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。所以可以说它是不兼容

8、iso8859-1 编码的,也不兼容任何编码。不过,相对于 iso8859-1 编码来说,uniocode 编码只是在前面增加了一个 0 字节,比如字母a为“00 61“。需要说明的是,定长编码便于计算机处理(注意 GB2312/GBK 不是定长编码),而unicode 又可以用来表示所有字符,所以在很多软件内部是使用 unicode 编码来处理的,比如 java。三、三、UTF-8 编码编码UTF:UCS Transformation Format.考虑到 unicode 编码不兼容 iso8859-1 编码,而且容易占用更多的空间:因为对于英文字母,unicode 也需要两个字节来表示。所

9、以 unicode不便于传输和存储。因此而产生了 utf 编码,utf 编码兼容 iso8859-1 编码,同时也可以用来表示所有语言的字符,不过,utf 编码是不定长编码,每一个字符的长度从 1-6 个字节不等。另外,utf 编码自带简单的校验功能。一般来讲,英文字母都是用一个字节表示,而汉字使用三个字节。注意,虽然说 utf 是为了使用更少的空间而使用的,但那只是相对于 unicode 编码来说,如果已经知道是汉字,则使用 GB2312/GBK 无疑是最节省的。不过另一方面,值得说明的是,虽然 utf 编码对汉字使用 3 个字节,但即使对于汉字网页,utf 编码也会比 unicode编码节

10、省,因为网页中包含了很多的英文字符。UTF8 编码后的大小是不一定,例如一个英文字母“a“ 和 一个汉字 “好“,编码后占用的空间大小就不样了,前者是一个字节,后者是三个字节!编码的方法是从低位到高位。黄色为标志位其它着色为了显示其,编码后的位置。四、四、iso8859-1 编码:编码:属于单字节编码,最多能表示的字符范围是 0-255,应用于英文系列。如,字母a的编码为 0x61=97。很明显,iso8859-1 编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用 iso8859-1 编码来表示。而且在很多协议上,默认使用该

11、编码。比如,虽然“中文“两个字不存在 iso8859-1编码,以 gb2312 编码为例,应该是“d6d0 cec4“两个字符,使用 iso8859-1 编码的时候则将它拆开为 4 个字节来表示:“d6 d0 ce c4“(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是 UTF 编码,则是 6 个字节“e4 b8 ad e6 96 87“。很明显,这种表示方法还需要另一种编码为基础。五、五、GBK 编码编码GBK 编码(Chinese Internal Code Specification)是中国大陆制订的、等同于 UCS 的新的中文编码扩展国家标准。gbk 编码能够用来同时表示

12、繁体字和简体字,而 gb2312 只能表示简体字,gbk 是兼容 gb2312 编码的。GBK 工作小组于 1995 年 10 月,同年 12 月完成GBK 规范。该编码标准兼容 GB2312,共收录汉字 21003 个、符号 883 个,并提供 1894 个造字码位,简、繁体字融于一库。Windows95/98 简体中文版的字库表层编码就采用的是GBK,通过 GBK 与 UCS 之间一一对应的码表与底层字库联系。英文名:Chinese Internal Code Specification中文名:汉字内码扩展规范 1.0 版双字节编码,GB2312-80 的扩充,在码位上和 GB2312-8

13、0 兼容范围:8140FEFE(剔除 xx7F)共 23940 个码位包含 21003 个汉字,包含了 ISO/IEC 10646-1 中的全部中日韩汉字六、六、GB2312 编码编码GB2312(1980 年)一共收录了 7445 个字符,包括 6763 个汉字和 682 个其它符号。汉字区的内码范围高字节从 B0-F7,低字节从 A1-FE,占用的码位是 72*94=6768。其中有 5 个空位是 D7FA-D7FE。GB2312-80 中共收录了 7545 个字符,用两个字节编码一个字符。每个字符最高位为 0。GB2312-80 编码简称国标码。GB2312 支持的汉字太少。1995 年

14、的汉字扩展规范 GBK1.0 收录了 21886 个符号,它分为汉字区和图形符号区。汉字区包括 21003 个字符。GBK、GB2312 等与 UTF8 之间都必须通过 Unicode 编码才能相互转换: GBK、GB2312UnicodeUTF8 UTF8UnicodeGBK、GB2312第二部分第二部分 编码方式测试编码方式测试一、文件内容编码方式验证:一、文件内容编码方式验证:在广东版本中写文件的短信内容定义为 UTF-8 编码方式,如何验证编码方式是否正确。(1)查看 GBK 编码文件的十六进制:在 UltraEdit 中新建一个文档,将发送的短信内容粘贴进 UltraEdit 中,使

15、用 Ctrl+H切换到十六进制编辑状态,展示的为 GBK 编码短信内容的十六进制状态。其中,汉字以双字节表示,字母、字符以单字节表示,比如:“系统 abc”GBK 编码的十六进制编辑状态显示为:CF B5 CD B3 61 62 63,“系”的十六进制为 CF B5,“统”的十六进制为 CD B3,“a”的十六进制为 61,“b”的十六进制为 62,“c”的十六进制为 63(2)查看 UTF-8 编码文件的十六进制:用 UltraEdit 打开一个已经是 UTF-8 编码的文件,提示是否转换为 DOS 格式,选择NO。再使用 Ctrl+H 切换到十六进制编辑状态,展示的就是 UTF-8 编码的

16、十六进制状态。(3)将 GBK 编码文件转换为 UTF-8 编码文件:在 UltraEdit 中新建一个文档,将发送的短信内容粘贴进 UltraEdit 中,选择“文件-转换-ASCII 到 UTF-8(Unicode 编辑)”,再使用 Ctrl+H 切换到十六进制编辑状态,展示的为 UTF-8 编码短信内容的十六进制状态。其中,汉字以三个字节表示,字母、字符以单字节表示,比如:“系统 abc”UTF-8 编码的十六进制编辑状态显示为:E7 B3 BB E7 BB 9F 61 62 63,“系”的十六进制为 E7 B3 BB,“统”的十六进制为 E7 BB 9F,“a”的十六进制为 61,“b”的十六进制为 62,“c”的十六进制为 63(4)在 Linux 的 VI 命令状态下转换查看文件的十六进制在 VI 命令状态下,按 Esc,再输入:%!xxd,将当前文本转换为十六进制格式。其它命令参考如下::%!xxd 将当前文本转换为 16 进制格式。:%!od 将当前文本转换为 8 进制格式。:%!xxd -c 12将当前文本转换为 16 进

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号