我有一个代表字符的任意字节块,以任意方案编码(可能是 ASCII、UTF-8、UTF-16)。我知道编码。
我要做的是在字节数组中找到最后一个新行 (\n) 的位置。我想知道读取最后一个编码后剩下多少字节\ n。
我在 JDK 或任何其他库中找不到任何可以让我将字节数组一一转换为字符的东西。InputStreamReader
以块的形式读取流,没有告诉我要读取多少字节来生成一个字符。
我是否将不得不做一些可怕的事情来重新编码每个字符以找出它的字节长度?
我有一个代表字符的任意字节块,以任意方案编码(可能是 ASCII、UTF-8、UTF-16)。我知道编码。
我要做的是在字节数组中找到最后一个新行 (\n) 的位置。我想知道读取最后一个编码后剩下多少字节\ n。
我在 JDK 或任何其他库中找不到任何可以让我将字节数组一一转换为字符的东西。InputStreamReader
以块的形式读取流,没有告诉我要读取多少字节来生成一个字符。
我是否将不得不做一些可怕的事情来重新编码每个字符以找出它的字节长度?
你可以试试这样的
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);
}