0
点赞
收藏
分享

微信扫一扫

ASCII编码与Unicode

棒锤_45f2 2022-03-15 阅读 52
java

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 之间,这四个字节必须放在一起解读

举报

相关推荐

0 条评论