java 字符的内部编码是 UTF-16 对吗?虽然所有 ASCII 都使用 2 字节编码,但我期望:
String h="hello";
System.out.println(h.codePointCount(0,h.length()));
System.out.println(h.length());
打印 10 和 5,但实际上打印的是 5, 5。
我哪里出错了?
最佳答案
尝试
String h="hell😀";
System.out.println(h.codePointCount(0,h.length()));
System.out.println(h.length());
它打印 5, 6。
“😀”由两个代码单元表示,“h”、“e”、“l”、“l”各一个。
关于UTF-16 :“编码是可变长度的,因为代码点是用一个或两个 16 位代码单元编码的......”
关于java char编码长度应该总是x乘2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53392670/