ASCII 编码方式和存储方式相同
1个字节共8位二进制数
若最高位为0,只使用后7位的称为标准ASCII码(基础ASCII码)
0-127号
0x00到0x7F
0000 0000到0111 0000
是英语字符
若最高位为1,为扩展ASCII码
128-256号
0x80到0xFF
1000 0000 到1111 1111
各国解释不同
Unicode统一码
编码方式固定是十六位的
每一个字符的Unicode编码是一样的
存储方式分为很多种
用得较多的有UTF-8和UTF-16
UTF-8
可能是1-4个字节
对于单字节字符0-127号与ASCII码相同,实现了兼容
Unicode 十六进制码点范围 UTF-8 二进制
0000 0000 - 0000 007F 0xxxxxxx
对于N(N>1)个字节的字符,第一个字节前N位为1,第N+1位为0,之后的N-1个字节前两位为10
剩下的那些位用Unicode码点填充
0000 0080 - 0000 07FF 110xxxxx 10xxxxxx
0000 0800 - 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx
0001 0000 - 0010 FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
UTF-16
可能是2个字节或4个字节
最前面的65536个字符位
0000 0000 0000 0000 - 1111 1111 1111 1111
称为基本平面,所有最常用字符都放在里面
基本平面中U+D800 到 U+DFFF
1101 1000 0000 0000到1101 1111 1111 1111
是空段,这些码点不对应任何字符,利用这些空段,将两个16位的后10位,一共20位,正好可以编码辅助平面的字符
还有一种平面叫做辅助平面共2^20个字符位
辅助平面的前10位映射在U+D800 到 U+DBFF,称为高位(H)
后10位映射在U+DC00 到 U+DFFF,称为低位(L)
若遇到两个字节,发现它的码点在 U+D800 到 U+DBFF 之间,则紧跟在后面的两个字节的码点,必在 U+DC00 到 U+DFFF 之间,这四个字节必须放在一起解读。