Java 从ByteBuffer读取特殊UTF-8字符
我怎样才能从ByteBuffer中读取特殊字符Java 从ByteBuffer读取特殊UTF-8字符,java,nio,Java,Nio,我怎样才能从ByteBuffer中读取特殊字符ByteBuffer.wrap(“\u0001.getBytes()).asCharBuffer().get()引发BufferUnderflow异常。据我所知,ByteBuffer.getChar()总是前进两个字节,而这个字符串中只有一个字节。你是说你想在ByteBuffer中迭代UTF-8编码字符而不通过字符串吗?如果你确定ByteBuffer包含UTF-8编码字符,使用StandardCharsets.UTF_8.decode(buffer)
ByteBuffer.wrap(“\u0001.getBytes()).asCharBuffer().get()
引发BufferUnderflow
异常。据我所知,ByteBuffer.getChar()
总是前进两个字节,而这个字符串中只有一个字节。你是说你想在ByteBuffer中迭代UTF-8编码字符而不通过字符串吗?如果你确定ByteBuffer包含UTF-8编码字符,使用StandardCharsets.UTF_8.decode(buffer).toString()
@that otherguy是的,我希望尽可能避免堆分配。faik没有内置的功能从字节缓冲区读取单个UTF-8编码的代码点,所以您必须编写自己的。为什么不使用CharBuffer.wrap()
?取消所有往返行程?