JAVA高级(12)—— 编码

一、编码(Character Encoding)

我们人类能看懂的是字符,就是Character。字符要在计算机系统里面存储、传输,要以二进制数字的形式。每一种编码就是一种字符和二进制数字之间的映射关系

GB2312和UTF-8都是常用的字符编码。举个例子,“王”字在GB2312编码方式下对应的二进制数字是11001101 11110101(CD F5),是两个8位二进制数,两个字节。同时,在UTF-8编码下“王”字对应的是11100111 10001110 10001011(E7 8E 8B),是三个字节。

乱码是怎样产生
乱码是因为一个字符在两种编码里对应的二进制数不同。假设有一个网页上显示单独一个“王”字,网页是用GB2312来编码的,这样浏览器通过网络接收到的二进制数就是CD F5,而浏览器用GB2312来解读的时候就把CD F5给“翻译”成了“王”字,我们就能正常浏览网页。假设浏览器试图用UTF-8编码来解读这个网页时,你会看到浏览器显示这样的字符“��”,这就是因为在UTF-8下面“王”字不是CD F5,实际上CD F5在UTF-8下面不能正确地映射到有意义的字符。

参考文献

“编码”和“乱码”

你可能感兴趣的:(JAVA高级(12)—— 编码)