ByteBuffer buffer=ByteBuffer.allocate(1020);
buffer.putChar('y');
Charset charset=(Charset)Charset.forName("UTF-8");
System.out.println(buffer.get(0));
System.out.println(buffer.get(1));
CharBuffer charbuffer=charset.decode(buffer);
charbuffer.flip(); System.out.println(charbuffer.toString());
问题1:
为什么buffer.get(0)显示结果是0;
而buffer.get(1)显示结果是121
我认为应把这两个结果掉转过来
问题2:
charset应把bytebuffer转换为charbuffer
之后显示一个y;为甚么在我的netbeans ide
下只显示了2个空格;(把"UTF-8"改成"GBK"也
不好使)
buffer.putChar('y');
Charset charset=(Charset)Charset.forName("UTF-8");
System.out.println(buffer.get(0));
System.out.println(buffer.get(1));
CharBuffer charbuffer=charset.decode(buffer);
charbuffer.flip(); System.out.println(charbuffer.toString());
问题1:
为什么buffer.get(0)显示结果是0;
而buffer.get(1)显示结果是121
我认为应把这两个结果掉转过来
问题2:
charset应把bytebuffer转换为charbuffer
之后显示一个y;为甚么在我的netbeans ide
下只显示了2个空格;(把"UTF-8"改成"GBK"也
不好使)
因此是放入了2个字节.第一个字节为0.第二个字节为 121。即'y'的ascii码
所以buffer.get(0)和get(1)分别返回0和121
即 buffer.put((byte)'y');
然后用UTF-8编码转为CharBuffer,即可得到"y"字符串
decode前要执行 buffer.flip();