我有代表字符的任意字节 block ,以任意方案编码(可能是 ASCII、UTF-8、UTF-16)。我知道编码。
我想要做的是找到字节数组中最后一个新行(\n)的位置。我想知道读取最后一个编码的\n 后还剩下多少字节。
我在 JDK 或任何其他库中找不到任何可以让我将字节数组一一转换为字符的内容。 InputStreamReader
以 block 的形式读取流,但没有给出任何指示读取了多少字节来生成字符。
我是否必须做一些可怕的事情,重新编码每个字符来计算出它的字节长度?
最佳答案
你可以尝试这样的事情
CharsetDecoder cd = Charset.forName("UTF-8").newDecoder();
ByteBuffer in = ByteBuffer.wrap(bytes);
CharBuffer out = CharBuffer.allocate(1);
int p = 0;
while (in.hasRemaining()) {
cd.decode(in, out, true);
char c = out.array()[0];
int nBytes = in.position() - p;
p = in.position();
out.position(0);
}
关于java - 一次将字节解码为字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17227331/