ASCII
American Standard Code for Information Interchange,美国信息交换标准代码。是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。起始于50年代后期,在1967年定案,是现今最通用的单字节编码系统,但不能良好满足其它非英语国家的需要。
Unicode
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。Unicode就像一个电话本,标记着字符和数字之间的映射关系。Joel称之为「神奇数字」,因为它们可能是随机指定的,而且不会给出任何解释。官方术语是码位(Code Point),总是用U+开头。理论上每种语言中的每种字符都被Unicode协会指定了一个神奇数字。例如希伯来文中的第一个字母א,是U+2135,字母A是U+0061。Unicode并不涉及字符是怎么在字节中表示的,它仅仅指定了字符对应的数字,仅此而已。
常见范围:
汉字:[0x4e00,0x9fa5](或十进制[19968,40869])
数字:[0x30,0x39](或十进制[48, 57])
小写字母:[0x61,0x7a](或十进制[97, 122])
大写字母:[0x41,0x5a](或十进制[65, 90])
Unicode编码
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符,并实现了对ASCII码的向后兼容,这意味着1980年代写的文档用UTF-8打开一点问题都没有。
Unicode/UCS-4 | bit数 | UTF-8 | byte数 | 备注 |
0000 ~ 007F [0, 127] | 0~7 | 0XXX XXXX | 1 | |
0080 ~ 07FF [128, 2047] | 8~11 | 110X XXXX 10XX XXXX | 2 | |
0800 ~ FFFF [2048, 65535] | 12~16 | 1110XXXX 10XX XXXX 10XX XXXX | 3 | 基本定义范围:0~FFFF |
1 0000 ~ 1F FFFF [65536, 2097151] | 17~21 | 1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX | 4 | Unicode6.1定义范围:0~10 FFFF |
参考: