- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? 编码字符集:编码字符集是一个字符集,它为每一个字符分配一个唯一数字。Unicode 标准的核心是一个编码字符集,字母“A”的编码为 004116 和字符“”的编码为 20AC16。Unicode 标准始终使用十六进制数字,而且在书写时在前面加上前缀“U+”,所以“A”的编码书写为“U+0041”。?1 ASCII码??? 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000?? 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。ASCII码一共规定了128个字符的编码(准确地说ASCII码是一个编码字符集),比如空格“SPACE”是32(二进,大写的字母A是65(二进。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。后128个称为扩展ASCII码,目前许多基于x86的系统都支持使用扩展ASCII码。?? 256个ASCII码中的后128个扩展码可定制用来表示特殊字符和非英语字符,GB2312就是利用这后面的128个扩展字符来表示汉字,[161,254]共94个字符来组成双字节来表示简体汉字字符表。2 Unicode编码字符集?? 光是英语字符ASCII编码字符集是够了,但是如果算上世界上其他的语言的字符,ASCII码显然不够了,于是Unicode编码字符集应运而生。?? Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转? 换到程序数据的编码方案。?3 UTF-8? /wiki/UTF-8????? Unicode编码字符集只是统一定义了所有字符和它对应Unicode编码值,而我们的程序中怎么去存储和读取这个Unicode编码值呢?显然,你可以直接统一规定所有Unicode编码值用四个字节来存储。但是这样的话,对于Unicode编码字符集中的与ASCII码表对应的那部分字符(只需要一个字节来表示的Unicode编码值)就有点浪费了。这样,utf-8也就粉墨登场了。?? UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。Unicode符号范围 | UTF-8编码方式(十六进制) | (二进制)--------------------+---------------------------------------------0000 0000? ~ ?0000 007F | 0xxxxxxx?????????????? --------7bit0000 0080? ~ ?0000 07FF | 110xxxxx10xxxxxx??? -------11bit0000 0800? ~? 0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx?-----16bit0001 0000? ~? 0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx?----21bitUTF-8编码规则:1 对于Unicode编码值的二进制位数小于等于7的情况,用一个字节来表示这个Unicode编码值,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。2 对于Unicode编码值的二进制位数大于等于8并且小于等于11的情况,用两个字节来表示,第一个字节的前两位都设为1,第两+1位设为0,第二个字节的前两位设为10。剩下的没有提及的二进制位,全部填充这个符号对应的unicode码。3? 以此类推,对于需要n个utf-8 字节来表示的的符号(n1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部填充这个符号对应的unicode码。?utf-8编码长度最大为四个字节,所以最多只能表示Unicode编码值的二进制数为21位的Unicode字符。4. UTF-16???? ?/wiki/UTF-16??16进制编码范围UTF-16表示方法(二进制)10进制码范围字节数量U+0000---U+FFFFxxxxxxxx xxxxxxxx0-6
文档评论(0)