【发布时间】:2017-05-10 08:31:40
【问题描述】:
假设我有一个字节数组,我尝试使用以下代码将其编码为 UTF_8
String tekst = new String(result2, StandardCharsets.UTF_8);
System.out.println(tekst);
//where result2 is the byte array
然后,我使用 getBytes() 获取值从 0 到 128 的字节
byte[] orig = tekst.getBytes();
然后,我希望使用 ff 对我的 byte[] orig 进行频率计数:
int frequencies = new int[256];
for (byte b: orig){
frequencies[b]++;
}
一切顺利,直到我遇到错误提示
java.lang.ArrayIndexOutOfBoundsException: -61
这是否意味着尽管将其转换为 UTF-8,我的字节仍包含负值?我做错了什么吗?有人可以让我澄清这个问题,因为我仍然是这个主题的初学者。谢谢。
【问题讨论】:
-
"Encode it to UTF_8" 意味着数据是文本。 “有一个字节数组”意味着它是用一些字符编码编码的。如果是这样,是哪个?或者,正如 Jon Skeet 指出的那样,如果它还不是文本,则应首先使用 Base64 或类似方法将其转换为文本。
标签: java arrays string encoding utf-8