charset转换bytebuffer

gysgogo 2010-04-15 07:25:54
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"也
不好使)
...全文
49 4 打赏 收藏 转发到动态 举报
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-04-15
  • 打赏
  • 举报
回复
另外
decode前要执行 buffer.flip();
「已注销」 2010-04-15
  • 打赏
  • 举报
回复
对于UTF-8编码,一个英文字符应该只占一个字节
即 buffer.put((byte)'y');
然后用UTF-8编码转为CharBuffer,即可得到"y"字符串
「已注销」 2010-04-15
  • 打赏
  • 举报
回复
buffer.putChar('y');Java里的char占用2字节
因此是放入了2个字节.第一个字节为0.第二个字节为 121。即'y'的ascii码
所以buffer.get(0)和get(1)分别返回0和121
owen_008 2010-04-15
  • 打赏
  • 举报
回复
给楼主顶一个~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~哈哈
相关推荐

62,567

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告