gpt4 book ai didi

Java String.codePointAt 返回意外值

转载 作者:行者123 更新时间:2023-11-29 06:46:38 25 4
gpt4 key购买 nike

如果我使用从 33 到 127 的任何 ASCII 字符,codePointAt 方法会给出正确的十进制值,例如:

String s1 = new String("#");
int val = s1.codePointAt(0);

这将返回 35,这是正确的值。

但是如果我尝试使用从 128 到 255 的 ASCII 字符(扩展的 ASCII/ISO-8859-1),此方法会给出错误的值,例如:

String s1 = new String("ƒ")  // Latin small letter f with hook
int val = s1.codePointAt(0);

这应该根据 this reference table 返回 159 ,而是返回 409,这是为什么?

最佳答案

But if I try use ASCII characters from 128 to 255

ASCII 没有此范围内的值。它只使用 7 位。

Java 字符是 UTF-16(仅此而已!)。如果要用Java表示ASCII,就需要使用字节数组。

codePointAt 方法返回 32 位代码点。 16 位字符不能包含整个 Unicode 范围,因此一些代码点必须分成两个字符(根据 encoding scheme for UTF-16 )。 codePointAt 方法有助于解析字符代码点。

我写了一个粗略的 Java 编码指南 here .

关于Java String.codePointAt 返回意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3948876/

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