Java编码总结

2020-06-21  本文已影响0人  玉圣

一、编码概念总结:

1、概念:

字符集(character set):是一个系统支持的所有抽象字符的集合。
字符(character):是各种文字和符号,包括国家文字、标点符号、图形符号、数字等。

2、常见字符集:

字符集规定了符合对应的二进制代码,至于这个二进制代码如何存储则没有任何规定。就是为每个字符规定一个用来表示该字符的数字,仅此而已。
是一种字符编码规范

3、常见编码方式:

4、其他:

目前为止Unicode-16规范没有指定FFFF以上的字符,所以UTF-8最多是使用3个字节来表示一个字符。但理论上来说,UTF-8最多需要用6字节表示一个字符。

5、中文编码:

国际上制定了针对中文的统一字符集GBK和GB18030,其中GBK已经在Windows、Linux等多种操作系统中被实现。

二、计算机中的编码:

1、说明:

2、编码规则:

编码规则

根据上面编码规则对照表,进行 UTF-8 编码和解码就简单多了。下面以汉字“汉”为利,具体说明如何进行 UTF-8 编码和解码。

“汉”的 Unicode 码点是 0x6c49(110 1100 0100 1001),通过上面的对照表可以发现,0x0000 6c49 位于第三行的范围,那么得出其格式为 1110xxxx 10xxxxxx 10xxxxxx。接着,从“汉”的二进制数最后一位开始,从后向前依次填充对应格式中的 x,多出的 x 用 0 补上。这样,就得到了“汉”的 UTF-8 编码为 11100110 10110001 10001001,转换成十六进制就是 0xE6 0xB7 0x89。

解码的过程也十分简单:如果一个字节的第一位是 0 ,则说明这个字节对应一个字符;如果一个字节的第一位1,那么连续有多少个 1,就表示该字符占用多少个字节。


示例

三、Java中的字符编码和字符集

1、char字符

2、String字符串

4、Big Endian,Little Endian与文本开头的标志

5、字节流与字符流

四、相关面试题:

1、Java中的char是两个字节,如何存UTF-8字符?

资料:
Java:Unicode简介
彻底弄懂 Unicode 编码
结合Java详谈字符编码和字符集
java编码之BASE64
Java中的字节,字符与编码,解码
Java Unicode编码系统

上一篇 下一篇

猜你喜欢

热点阅读