Unicode
是一个字符集,它有很多不同的编码实现。
包括 utf-8, utf-16, utf-32.
java 中的内码和外码
内码:char或String在内存里使用的编码方式
外码:除了内码都可以认为是“外码”。(包括class文件的编码)
Java语言规范规定,Java的char类型是UTF-16的code unit,也就是一定是16位(2字节);
UTF-16 的 16 指的就是最小为 16 位一个单元,也即两字节为一个单元。
外码统一使用 utf-8 (windows 可以设置为utf-8)
若有的字节是4字节的UTF-16。那么它将被放入两个单元的char中储存,所以length为2.
public class testStringLength {
public static void main(String [] args){
String C = "\uD834\uDD1E";// 这个就是音符字符的UTF-16编码
System.out.println(C);
System.out.println(C.length()); // 返回 2
System.out.println(C.codePointCount(0,C.length())); // 返回 1
}
}