`
Wanghuidong
  • 浏览: 43822 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
文章分类
社区版块
存档分类
最新评论
  • openFox: 确实,以前只知道编码是个名词,在项目中编码统一就可以了,原来是 ...
    java编码解惑
  • tianzizhi: 前段时间我也看了许多这方面的东西,基本理解了,拿楼主的总结再复 ...
    java编码解惑

java编码总结

阅读更多

       一直以来被书上、网上各位“大侠”云里雾里的 关于java编码问题的解释晃的头痛。因为不少人都没能深入理解编码、解码的关系,使用了不恰当的术语,给许多新手造成了误解。现在个人根据心得及实验,为新手明确解释一下,也为自己加深理解总结。

      1.String .getBytes()方法:使用指定字符集将字符串转换为unicode字符集,存储到内存。

      **注:java平台采用国际通用的一个字符集unicode 作为统一编码方式,作为其他字符集与内存交换的桥梁。

      比如:String s="测试";
              byte b[]=s.getBytes("gbk");
              for(int i=0;i<b.length;i++){
               System.out.println(b[i]);
              }

         输出:-78
                  -30
                 -54
                  -44(4个字节,gbk字符集中一个汉字2个字节)

          这段代码是 使用gbk字符集将 -78-30-54-44 这个2进制码解析成unicode字符集的 某一个码存入内存好让jvm执行。“编码”是一种动作,“字符集”才是一个名词。

 

2.某某大侠经常说 这个页面编码是gbk,正确的说法应该是 该页面  使用gbk字符集编码为unicode码,所以要想不出现乱码,必须使用gbk字符集 在接收端同样的去解码,例如“测试”经gbk编码之后的二进制码为-78-30-54-44,这个样子的一个码值,转为为java unicode编码之后例如是    254 264 278 264(没试验过的unicode码值,只是举个例子)     你用Utf-8的字符集去解析这个-78-30-54-44,码值,utf-8字符集一个汉字占3个字节,当然不能还原为2个汉字了,4/3=1.....。当然就不能转换为正确的unicode字符集到内存,当然就出现乱码了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics