随便写点什么吧。解析byte为String,以前也搞过,用的都是String的一些方法,看了书,发现一些更标准的,和大家分享一下。
其实很多方法可以解析,散布在Java类库的各处。但是,在java se1.4中,引入了java.nio包中Charset类统一了对字符集的转换。
字符集建立了量自己Unicode码元序列与使用本地字符编码方式的字节序列之间的映射。ISO-8859-1是最流行的字符编码方式之一(java源码也能找到这样的编码方式,我的理解,这货应该是ascii码的优化版本吧,都是256个字符),ISO-885-15说是更加重要,是更优化的版本,如去掉一些无用符号,引入常用符号等。
Charset cset = Charset.forName("ISO-8859-1");
如何编码:
String str = "..."; ByteBuffer buffer = cset.encode(str); byte[] bytes = buffer.array();
如何解码:
byte[] bytes = ...; ByteBuffer bbuf = ByteBuffer.wrap(bytes, offset, length); CharBuffer cbuf = cset.decode(bbuf); String str = cbuf.toString();
第1.3节,介绍了以前曾介绍过的改良utf-8,得知原来utf16对大于0xffff的unicode编码有不同的方式(不是两字节,别且还挺长),好吧,原来是这样的。。。