[Java NIO]Java 字符集

2020-08-06  本文已影响0人  檀香灰

1.Java 与 Unicode

大部分操作系统在I/O 与文件存储方面仍然是以字节为导向的,所以无论使用何种编码,Unicode或其它,在字节序列和字符集编码之间仍然需要转化。

2.JVM 的字符集

3.Unicode 与 UTF-32/UTF-8

UTF-32 规则简单,但是缺陷明显,对一个西文字母,UTF-32 是ASCII 花费空间的四倍 (ASCII 每个字符只需要一个字节存储)。

UTF-8 的编码规则如下(U+ 后面的数字代表 Unicode 字符代码):

U+ 0000 ~ U+ 007F: 0XXXXXXX
U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX
U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX
U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

可以看到,UTF-8 通过开头的标志位位数实现了变长。对于单字节字符,只占用一个字节,实现了向下兼容 ASCII,并且能和 UTF-32 一样,包含 Unicode 中的所有字符,又能有效减少存储传输过程中占用的空间

上一篇下一篇

猜你喜欢

热点阅读