java char编码长度应该总是x乘2?

标签 java encoding char

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/

相关文章:

java - 如何在 Swing 中绘制相邻的矩形?

unicode - 如何知道 UTF-16 发送给您的字节数

mysql - 将 UTF8 数据从 Rails 应用程序编码到 Mysql 时出现问题

c - 使用动态内存分配设置 char 数组的确切大小

C++ 错误 C2040 : 'ip' : 'const char *' differs in levels of indirection from 'std::string' ?

java - apache Zookeeper kafka 路径

java - Spring security登录外部链接

java - fragment/寻呼机适配器中的 ListView null

c# - 解析html时被问号替换的字符

c++ - 如何反转字符数组并将它们存储在新文件中?