gpt4 book ai didi

java - 在 Java 中使用 Emoji 进行字符串编码?

转载 作者:行者123 更新时间:2023-12-04 00:53:57 24 4
gpt4 key购买 nike

我有这样的小测试例子

    public class Main {
public static void main(String[] args) {
String s = "🇻🇺";
System.out.println(s);
System.out.println(s.length());
System.out.println(s.toCharArray().length);
System.out.println(s.getBytes(StandardCharsets.UTF_8).length);
System.out.println(s.getBytes(StandardCharsets.UTF_16).length);
System.out.println(s.codePointCount(0, s.length()));
System.out.println(Character.codePointCount(s, 0, s.length()));
}
}

结果是:

🇻🇺
4
4
8
10
2
2

我不明白,为什么 1 个 unicode 字符瓦努阿图标志返回长度为 4,在 utf-8 中为 8 个字节,在 utf-16 中为 10 个字节,我知道 java 使用UTF-16 并且它需要 1 个字符(2 个字节)作为 1 个代码点,但它让我对 1 个 unicode 字符的 4 个字符感到困惑,我认为它只需要 2 个字符但结果为 4。有人可以充分解释以帮助我理解这一点.非常感谢。

最佳答案

Unicode 标志表情符号被编码为两个代码点。

有 26 个 Regional Indicator Symbols代表A-Z,并且通过拼写出ISO国家代码来编码标志。例如,瓦努阿图国旗编码为“VU”,美国国旗编码为“US”。

指标都在补充平面,所以他们每个都需要两个UTF-16字符。这使得每个标志的总数达到 4 个 Java char

这样做的目的是避免每当一个国家获得或失去独立时都必须更新标准,并且它有助于 Unicode 联盟保持中立,因为它不必成为地缘政治主张的仲裁者。

关于java - 在 Java 中使用 Emoji 进行字符串编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64213394/

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