字符集与编码

上传人:206****923 文档编号:51711339 上传时间:2018-08-16 格式:PPTX 页数:44 大小:164.50KB
返回 下载 相关 举报
字符集与编码_第1页
第1页 / 共44页
字符集与编码_第2页
第2页 / 共44页
字符集与编码_第3页
第3页 / 共44页
字符集与编码_第4页
第4页 / 共44页
字符集与编码_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《字符集与编码》由会员分享,可在线阅读,更多相关《字符集与编码(44页珍藏版)》请在金锄头文库上搜索。

1、1字符集与编码通信增值事业部 梁浩2011年5月15日2目录 字符集和编码的概念 编码在编程中的应用3字符与编码的发展系统内码说明系统阶段一ASCII计算机刚开始只支持英语,其它语言不能够在计算机上存储和显示。英文 DOS阶段二ANSI编码 (本地化)为使计算机支持更多语言,通常使用 0x800xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 中 在中文操作系统中,使用 0xD6,0xD0 这两个 字节存储。不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等 各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编 码方式,称为 ANSI 编

2、码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两 种语言的文字,存储在同一段 ANSI 编码的文本中。中文 DOS,中文 Windows 95/98, 日文 Windows 95/98阶段三UNICODE (国际化)为了使国际间信息交流更加方便,国际组织制定了 UNICODE 字符集, 为各种语言中的每一个字符设定了统一并且唯一的数字编号,以满足跨 语言、跨平台进行文本转换、处理的要求。Windows NT/2000/XP/Vista /7,C#, Java4字

3、符串在内存中的存放方法(一) 在 ASCII 阶段: 42 6F6231323300B ob1230 引入非ASCII字符之后:D6 D0CEC431323300中文12305字符串在内存中的存放方法(二) Unicode被采用后:2D 4E 87 65 31 00 32 00 33 00 00 00 中 文 1 2 3 0 6字符,字节,字符串字符 们使用的记号,抽象意义上的一个符号。 如:1, 中, a, $, ¥, 字节 计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空 间。 如:0x01, 0x45, 0xFA, ANSI 字符串 在内存中,如果“字符”是以 ANSI

4、编码形式存在的,一个字符可能使 用一个字节或多个字节来表示,那么我们称这种字符串为 ANSI 字符串 或者多字节字符串。 Unicode字符串 在内存中,如果“字符”是以在 UNICODE 中的序号存在的,那么我们 称这种字符串为 UNICODE 字符串或者宽字节字符串。7字符集与编码 各个国家和地区所制定的不同 ANSI 编码标准中,都只规 定了各自语言所需的“字符”。比如:汉字标准( GB2312)中没有规定韩语字符。 这些 ANSI 编码标准所规定的内容包含两层含义 使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准 中。所包含“字符”的集合就叫做“字符集”。 规定每个“字符”分别用

5、一个字节还是多个字节存储,用哪些字 节来存储,这个规定就叫做“编码”。 “字符集”和“编码”一般都是同时制定的。平常我们所 说的“字符集”,比如:GB2312, GBK, JIS 等,除了有 “字符的集合”这层含义外,同时也包含了“编码”的含 义。8Unicode字符集与Unicode编码 “UNICODE 字符集”包含了各种语言中使用到的所有“ 字符”。 UNICODE 字符集编码的标准有很多 如:UTF-8, UTF-7, UTF-16, UnicodeLittle, UnicodeBig 等9常用编码单字节编码 ISO-8859-1 又称Latin-1或“西欧语言” 包含大部欧洲使用的字

6、符,如德、意、西、葡语,以 及阿尔巴尼亚语、巴斯克语等。 它以ASCII为基础,在空置的0xA0-0xFF的范围内, 加入96个字母及符号 法语及芬兰语本来也使用ISO/IEC 8859-1来表示。但 因为缺少一些符号,故于1998年被ISO/IEC 8859-15 所取代。(ISO 8859-15同时加入了欧元符号) http:/zh.wikipedia.org/wiki/ISO/IEC_8859-1 10常用编码ANSI编码 GB2312/GBK/GB18030(简体中文) BIG5(繁体中文) Shift_JIS(日文) 11GB2312/GBK/GB18030编码 GB2312 又称

7、GB 2312-80 简体中文字符集的中国国家标准, 1981年5月1日实施 通行于中国大陆;新加坡等地也采用 中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。 GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字 3008个 GB 2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字 已经覆盖中国大陆99.75%的使用频率 GBK与GB18030 对于人名、古汉语等方面出现的罕用字,GB2312并没有收录,GBK及 GB18030字符集主要是增加这些不常用的汉字或字符。 GB18030兼容GBK, GBK兼容GB2312 GB18030是最新的汉字字

8、符集,可以处理所有汉字字符12BIG-5编码 BIG-5编码 又称大五码,是通行于台湾、香港地区的一个 繁体字编码方案。 共收录13,060个中文字 BIG-5的问题 很多字未收录,如“堃”(台湾当局“总统府 ”秘书长游锡堃)、“喆”(歌手陶喆)等 各种衍生版本,不统一 现在大多数应用程序直接支持Unicode以 避免这些问题。13常用编码Unicode编码 UTF-8 UTF-16 UTF-32 UnicodeBig/UnicodeLittle 注意:前面说大部分情况下,字符集和编 码是一回事,但是Unicode不一样。14编码的实质 我们实际上没有必要去深究每一种编码具 体把某一个字符编码

9、成了哪几个字节,我 们只需要知道“编码”的概念就是把“字 符”转化成“字节”就可以了。 对于“UNICODE 编码”,由于它们是可 以通过计算得到的,因此,在特殊的场合 ,我们可以去了解某一种“UNICODE 编 码”如UTF-8是怎样的规则。15UTF-16编码 UTF-16编码 如果字符编码小于0x10000,也就是十进制的 0到65535之内,则直接使用两字节表示 如果字符编码大于0x10000,用四字节表示使用UTF-16编码的例子编码名称编码次序编码BOM朱,聿UTF-16LE小尾序31 672C 007F 8069 D8 A5 DEUTF-16BE大尾序67 3100 2C80 7

10、FD8 69 DE A5UTF-16小尾序,包含 BOMFF FE31 672C 007F 8069 D8 A5 DEUTF-16大尾序,包含 BOMFE FF67 3100 2C80 7FD8 69 DE A516UCS-2编码 UTF-16可看成是UCS-2的父集 对于小于0x10000的字符,UTF-16编码就 等于UCS-2编码 现在若有软件声称自己支持UCS-2编码, 那其实是暗指它不能支持在UTF-16中超过 2bytes的字符。17UTF-8编码(一) 为什么要UTF-8 ASCII转换成UTF16/UCS-2,在编码前插入一 个0x0。用这些编码,会含括一些控制符,比 如“或

11、/,这在UNIX和一些C函数中,将会产 生严重错误。因此可以肯定,UCS-2不适合作 为Unicode的外部编码,也因此诞生了UTF-8 。18UTF-8编码(二)UCS-4编码UTF-8字节流U+00000000 U+0000007F0xxxxxxxU+00000080 U+000007FF110xxxxx 10xxxxxxU+00000800 U+0000FFFF1110xxxx 10xxxxxx 10xxxxxxU+00010000 U+001FFFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxxU+00200000 U+03FFFFFF111110xx 10x

12、xxxxx 10xxxxxx 10xxxxxx 10xxxxxxU+04000000 U+7FFFFFFF1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxxUnicode和UTF-8之间的转换关系表举例: Unicode: 100111101100000 4F60 UTF-8 : 11100100,10111101,10100000 E4BDA019UTF-8编码(三) 简单来说,UTF-8特点: 字符的长度是可变的 字符是有特征的,可以方便检测出来 英文字符:1字节 一般中文字符:3字节 特殊中文字符:4-6字节 不同长度字符检测办法:

13、 第一位是0的字节,说明是ASCII,1字节是1个字符 前四位是1110的字节,说明是从这个字节开始向后共 3个字节是1个字符 (参见前表)20UTF-8编码(四) IETF规定所有互联网协议都要支持UTF-8 但现实情况 规定往往都是在事实标准成立以后制定的 不能强制早期的软件都要修改 新的软件也要遵重事实标准,明知不规范,考 虑到易用性,往往也要作一些让步21CodePage 代码页的概念 代码页实际上就是编码的意思。是编码的 另外一种说法。 代码页: 950 繁体中文 949 朝鲜语 936 简体中文 932 日语 65001 UTF-822Big Endian和Little Endia

14、n的概念 Big Endian:高位在低字节 Little Endian:高位在高字节 以内存数据0x0A0B0C0D举例: 网络字节序 网络传输一般采用Big Endian,也称为网络字节序,或网络序Big Endian: 地址增长方向 .0x0A0x0B0x0C0x0D.Little Endian: 地址增长方向 .0x0D0x0C0x0B0x0A.23BOM的概念 BOM=Byte Order Mark 是存储在文件开头的几个特殊字节,用以 表明文件的编码格式的。 例如: UTF-8EF BB BF UTF-16(Little Endian)FF FE UTF-16(Big Endian

15、)FE FF24自动检测编码 某些程序可以自动检测编码 例如:记事本、IE 流览器 实质上就是扫描一下所有字符,根据文件的 BOM,或者各种字符集的特征(如UTF-8有 明显特征)自动确定编码 这些自动检测可能不准 某些API带有自动检测编码的参数 实际上是检查BOM 一般不建议使用25编码间的转换 某些编码格式之间可以有一些简单的算法 转换 如 UTF-8与UTF-16 某些编码格式之间是没有任何规律的 如GB2312与UTF-8之间 实质上是查询码表一个字符一个字符找到的 不是任意格式间都能互转26编码在HTTP协议中的应用Accept-Charset浏览器申明自己接收的字符集,如gb2312,utf-8(这里说的Charset其实不仅是字符 集,而且包括了相应的字符编码方案); Accept-Encoding浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方 法(gzip,deflate),(注意:这不是只字符编码); Accept-Language浏览器申明自己接收的语言,如 zh-CN。

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

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

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