Java编码问题
所谓Unicode就是全世界的字符字典,也就是把字符给一个编号,这个编码就是码点。比如

2. 编码
由于这种分配的编码无论从占用空间角度,还是读取速度,以及逻辑划分角度,都不是完善。所以出现了计算机编码,就是把每一个字符分配一个二进制的数字来表示。比如采用hafman编码,这种可以大大的节省存储空间,现代的压缩逻辑有的就是这样。
package com.inspur;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: Zekun Fu
* @date: 2023/9/30 20:43
* @Description:
*/
public class Main5 {
public static void main(String[] s) throws UnsupportedEncodingException {
// 10 然后一个结尾字符'/0'
String str = "Hello, 世界! 所有字符都是一样的";
System.out.println(str.length());
// 获取字符串的UTF-16字节数组
byte[] utf16Bytes = str.getBytes(StandardCharsets.UTF_16);
System.out.println(utf16Bytes.length);
int len = 0;
// 遍历字节数组,计算每个字符所占用的字节数
for (char c : str.toCharArray()) {
String t = ("" + c);
len = t.getBytes(StandardCharsets.UTF_16).length;
System.out.println("字符: " + t + ", 字节数: " + len);
}
// 遍历字符串的每个码点
for (int i = 0; i < str.length(); i++) {
int codePoint = str.codePointAt(i);
System.out.println("\"" + str.charAt(i) + "\"的码点:" + codePoint);
}
}
}


