JAVA - 字符编码
ASCCI 码表:

ASCCI 存储和读取一个字符a的过程:

GBK 存储一个字符a的过程:

GBK 存储一个汉字的过程:

一个汉字为什么占2个字节?
计算机存储汉字时如果用一个字节也就是8个比特位可以表示:2^8=256 个汉字,可以表示的汉字太少
2个字节的话:2^16 = 65536 个汉字
Unicode 存储一个汉字:

UTF-16 和 UTF-32 比较浪费空间因此产生了UTF-8 的编码规则
UTF:Unicode Transfer Formot,Unicode 转化格式化
因此:UTF-16 、UTF-32、UTF-8 只是计算机在存储Unicode字符时的一种编码规则,而不是一张编码表
UTF-8 编码规则:

Unicoed & UTF-8 存储一个汉字:

JAVA中处理字符编解码:
import jdk.swing.interop.SwingInterOpUtils;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class EncodeDemo {
public static void main(String[] args) throws UnsupportedEncodingException {
String str1 ="ai你呦";
//编码
byte[] bytes = str1.getBytes(); //IDEA默认UTF-8
System.out.println(Arrays.toString(bytes)); //[97, 105, -28, -67, -96, -27, -111, -90],-28,-67-96代表你,-27, -111, -90代表呦
//指定编码的字符集
byte[] gbks = str1.getBytes("GBK");
System.out.println(Arrays.toString(gbks)); //[97, 105, -60, -29, -33, -49]
//解码
String str2 = new String(bytes);
System.out.println(str2);
String str3 = new String(gbks,"GBK"); //指定字符集进行解码
System.out.println(str3);
}
}
本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/16885825.html

浙公网安备 33010602011771号