(为了避免过于本地化,我选择了 Ꙭ 作为示例,但许多其他字符也会发生这种情况)
字符 Ꙭ 是 \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,所以代理不应该有任何复杂性。好像我在这里遗漏了一些关键概念......