gpt4 book ai didi

java - 为什么 "Ꙭ".codePointAt(0)==205 和其他 Java 字符奇怪?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:23 25 4
gpt4 key购买 nike

(以免因为过于本地化而关闭,我选择了 Ꙭ 作为示例,但许多其他字符也会出现这种情况)

字符 Ꙭ 是\uA66C 或十进制的 42604 ( http://unicodinator.com/#A66C )。在使用 Java 的 Character 类时,我看到了一些我无法理解的非常奇怪的事情。

1) Character.isLetter('Ꙭ');//won't compile, complains 'unclosed character literal'
2) Character.isLetter("Ꙭ".charAt(0)); //returns true, which is right
3) Character.isLetter(42604);//returns false
4) Character.isLetter('\uA66C');//returns false
5) "Ꙭ".codePointAt(0);//returns 205? 205 is Í http://unicodinator.com/#00CD
6) ("Ꙭ".charAt(0)==(char)42604) //is false

除了 #2 之外的所有内容对我来说都没有意义。这个字符在 BMP 中,而不是从\uD800 到\uDFFF,所以代理不应有任何复杂性。似乎我在这里遗漏了一些关键概念......

最佳答案

看起来您的编辑器使用的字符编码与 javac(或等效编译器)使用的字符编码不同。 javac 将默认选择您机器上恰好设置为默认的编码。使用-encoding 来改变javac。

UTF-8 中的Ꙭ 将在拉丁语 1(或类似语言)中显示为 ê¬ (0xEA 0x99 0xAD),这对于字 rune 字无效,因为它是三个字符。

至于 3 和 4,它显然是在相对较新的 Unicode 5.1.0(2008 年 3 月)中引入的,您使用的 Java 版本可能不支持它。显然 Java SE 6 使用 Unicode 4.0; Java SE 7 使用 Unicode 6.0.0。

大多数人坚持使用 US ASCII 作为源文件,这是有充分理由的。

关于java - 为什么 "Ꙭ".codePointAt(0)==205 和其他 Java 字符奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604281/

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