JAVA 存储字符是UTF-16编码,下面记下关键
- UTF-16 可以是变长编码,可以是2个字节(在基本平面中),或4个字节(在增补平面中)
- 最初可以用2个字节表示,后来字符多了,有的字符需要4个字节。可以用2个字节表示的字符在BMP中(basic multilingual plane),4个字节的字符在其他16个plane中 (共 2^20个(舍弃每2字符的开头6位 32-12=20位),也就是两个2的10次方相乘的量,2的4次方个 2的16次方 ,因为每个plan 2的16次方个)
- UTF-16 当这2个字节是110110开头后10位全0到全f(前10位first code unit) 或 110111开头后10位全0到全f (后10位 second code unit),这些表示要用2个2字节(4字节)表示一个字符,两部分正好可以表示 10的20次方个字符(正好是非BMP中的字符的量),关键是用2进制去看这部分的范围。在110110段 和110111 段,很好记 .
4. 其他注意 big-endian little-endian BOM (byte order mark)

浙公网安备 33010602011771号