`
nanapoleon
  • 浏览: 46796 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

编码方式

阅读更多
    这周不但周内忙,周日帮礼泉的同学结婚,两天也一晃过去了。值得一提的是,我竟然一天中两顿吃出苍蝇来!让我情何以堪。T.T
    随便写点什么吧。解析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编码有不同的方式(不是两字节,别且还挺长),好吧,原来是这样的。。。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics