gpt4 book ai didi

java - 编码 - codePointCount 和 length 之间的结果不同

转载 作者:行者123 更新时间:2023-11-30 04:08:39 25 4
gpt4 key购买 nike

我发现了一个棘手的地方,但找不到任何答案为什么会发生这种情况。

主要问题是字符串有多长。

是否包含一个或两个字符。

代码:

public class App {
public static void main(String[] args) throws Exception {
char ch0 = 55378;
char ch1 = 56816;
String str = new String(new char[]{ch0, ch1});
System.out.println(str);
System.out.println(str.length());
System.out.println(str.codePointCount(0, 2));
System.out.println(str.charAt(0));
System.out.println(str.charAt(1));
}
}

输出:

?
2
1
?
?

有什么建议吗?

最佳答案

Whether it contains one or two character.

它包含一个 Unicode 字符,该字符由 2 个 UTF-16 代码单元组成。 Java 中的每个 char 都是一个 UTF-16 代码单元...它可能不是一个完整的字符。每个字符都有一个代码点 - Unicode 提供了一个编码字符集,将每个字符映射到表示该字符的整数(代码点)。

length() 返回代码单元的数量,而 codePointCount 返回代码点的数量。

您可能想看看我关于encodings in .NET的文章- 术语都可以很好地翻译(因为它是标准术语),因此只需忽略 .NET 特定的部分即可。

关于java - 编码 - codePointCount 和 length 之间的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20162239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com