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);
    }
}

https://www.zhihu.com/question/274104168

posted @ 2022-11-13 13:07  chuangzhou  阅读(21)  评论(0)    收藏  举报