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字符集到内存,当然就出现乱码了。

你可能感兴趣的:(java,jvm)