【发布时间】:2013-05-30 07:00:02
【问题描述】:
我正在尝试理解编码方式,这是我对字符串进行编码和解码的代码。
Charset utfset = Charset.forName("UTF-8");
CharsetEncoder encoder = utfset.newEncoder();
String text = "java.abcded.tocken";
CharBuffer cb = CharBuffer.wrap(text.toCharArray());
ByteBuffer bb = encoder.encode(cb);
byte[] bytes = bb.array();
CharsetDecoder isodecoder = utfset.newDecoder();
CharBuffer isodcb = isodecoder.decode(bb);
System.out.println(String.valueOf(cb.array()).equals(String.valueOf(isodcb.array())));
CharBuffer isodcb2 = isodecoder.decode(ByteBuffer.wrap(bytes));
System.out.println(String.valueOf(cb.array()).equals(String.valueOf(isodcb2.array())));
当使用 byteBuffer 本身执行解码时,字符串是相等的,但是,当使用 bytebuffer 中的字节数组的 bytebuffer.wrap 执行解码时,字符串不相等。后面加了空格,有什么原因吗?
【问题讨论】: