String str="中国";
String str1=new String(str.getBytes("GBK"),"ISO8859_1");
String str2=new String(str1.getBytes("ISO8859_1"),"GBK");
System.out.println("Received2: " + str2); // 这儿能输出中国String str="中国";
String str1=new String(str.getBytes("GBK"),"UTF-8");
String str2=new String(str1.getBytes("UTF-8"),"GBK");
System.out.println("Received2: " + str2);// 这儿输出乱码晕!

解决方案 »

  1.   

    因为ISO8859_1是一种很特殊的编码,每一个字节在这种编码上都有对应的字符,因此任意编码都可以转成这个再变回原来的编码
    但是其他大部分编码都不具备这种性质,因此这种过程总的来说是不可逆的
    ps:ISO8859_1(又叫latin1)的这种性质经常用来做在不支持某一编码的平台上进行存储信息
      

  2.   

    因为ISO8859_1是一种很特殊的编码,每一个字节在这种编码上都有对应的字符,因此任意编码都可以转成这个再变回原来的编码
    但是其他大部分编码都不具备这种性质,因此这种过程总的来说是不可逆的
    ps:ISO8859_1(又叫latin1)的这种性质经常用来做在不支持某一编码的平台上进行存储信息
    ======================
    太精辟了。