public class test{
public static void main(String[] args)throws Exception{
String str=args[0];
str=new String(str.getBytes(),"utf8");//GBK -> utf8
String str2=new String(str.getBytes("utf8"),"GBK"); //utf8 ->gbk
System.out.println(str2); //出现乱码
}
}
C:\ww>java test 同
同C:\ww>java test 同学
同学C:\ww>java test 同学们
同学锟斤拷C:\ww>java test 同学们好
同学锟角猴拷C:\ww>java test 同学们好大
同学锟角好达拷

解决方案 »

  1.   

    建议去看看这片文章
    http://www.regexlab.com/zh/encoding.htm因此,我们常常使用 bytes = string.getBytes("iso-8859-1") 来进行逆向操作,得到原始的“字节串”。然后再使用正确的 ANSI 编码,比如 string = new String(bytes, "GB2312"),来得到正确的“UNICODE 字符串”。
      

  2.   

    编码转换当然是 用什么编码就用什么解码。str=new String(str.getBytes("utf8"),"utf8");
    String str2=new String(str.getBytes("gbk"),"GBK"); 这样是对的!
      

  3.   

    public class Code{
    public static void main(String[] args)throws Exception{
    String str=args[0];
    str=new String(str.getBytes("GBK"),"utf8");
    String str2=new String(str.getBytes("utf8"),"GBK"); 
    System.out.println(str2); 
    }
    }
    换成这样就好啦,你的先得到相应的字节码,
      

  4.   

    treeroot(旗鲁特) :编码转换当然是 用什么编码就用什么解码。str=new String(str.getBytes("utf8"),"utf8");
    String str2=new String(str.getBytes("gbk"),"GBK"); 这样是对的!
    ----------------------------------------------
    1,平时看到大把的String str=new String(str.getBytes("utf8"),"GBK");这样的代码,是不是都是误人子弟?2,这样转,结果没错。但我怀疑编码根本没有转换。因为iso8859-1不能表示中文,不知我的理解对否?
    String str="如果是中文的话";
    str=new String(str.getBytes("gbk"),"iso8859-1");
    String str2=new String(str.getBytes("iso8859-1"),"gbk");  
      

  5.   


    3,这样转又出现乱码了,真是困惑?
    String str="如果是中文的话";
    str=new String(str.getBytes("iso8859-1"),"iso8859-1");
    String str2=new String(str.getBytes("gbk"),"gbk");
      

  6.   

    String str=new String(str.getBytes("utf8"),"GBK");
    这种写法完全是扯淡! 偶尔可能会正确,因为对于ascii字符他们的编码可能一样。String str="如果是中文的话";
    str=new String(str.getBytes("gbk"),"iso8859-1");
    String str2=new String(str.getBytes("iso8859-1"),"gbk");  
    这就更不知道在做什么了,
    两条莫名其妙的语句,当然偶尔不出现乱码也是可能的。
    就比如从10层楼跳下来也很可能一点事没有
      

  7.   

    Top  
     rickhunterchen(千山鸟飞绝) ( ) 信誉:100  2006-04-26 11:28:00  得分: 0  
     
     
       建议去看看这片文章
    http://www.regexlab.com/zh/encoding.htm因此,我们常常使用 bytes = string.getBytes("iso-8859-1") 来进行逆向操作,得到原始的“字节串”。然后再使用正确的 ANSI 编码,比如 string = new String(bytes, "GB2312"),来得到正确的“UNICODE 字符串”。
      
     ---------------------------------------------------------------------------
    楼上说你这文章在扯淡,看来高手间的分歧还是很大的。
      

  8.   

    to treeroot(旗鲁特) :1,平时看到大把的String str=new String(str.getBytes("utf8"),"GBK");这样的代码,是不是都是误人子弟?
    ----------------------------------------------------------------------------------
    对不起,我这里要更正一下:应该是String str=new String(str.getBytes("iso8859-1"),"GBK");//而非utf8.3,这样转又出现乱码了,真是困惑?
    String str="如果是中文的话";
    str=new String(str.getBytes("iso8859-1"),"iso8859-1");
    String str2=new String(str.getBytes("gbk"),"gbk");
    ---------------------------------------------------------------
    iso8859-1不能表示中文,所以不能这么转对不对?那平时,我们用get,post方式提交“中文内容”到服务器。在这个过程中,这些中文内容又采取什么编码格式?
    我以前认为是iso8859-1,所以才有String str=new String(str.getBytes("iso8859-1"),"GBK");这样的转换。现在看来,这种理解值得商榷?
      

  9.   

    那平时,我们用get,post方式提交“中文内容”到服务器。在这个过程中,这些中文内容又采取什么编码格式?
    ========================================================================================
    看看这里:
    http://www.blogjava.net/rickhunter/articles/33571.html
      

  10.   

    str.getBytes("iso8859-1")
    是把字符串使用iso8859-1编码转成字符串,如果str里面都是ascii码就不会丢失信息
    如果含有中文就会丢失信息,导致无法恢复。
      

  11.   

    str.getBytes("iso8859-1")
    是把字符串使用iso8859-1编码转成字符串,如果str里面都是ascii码就不会丢失信息
    如果含有中文就会丢失信息,导致无法恢复。
    ----------------------------------------------------------------------------
    treeroot(旗鲁特) 老大,我想知道的是我们get,post中文信息到服务器,这些中文信息是什么编码?
      

  12.   

    str.getBytes("iso8859-1")
    是把字符串使用iso8859-1编码转成字节流因为在java中,字符串都是unicode的,都是双字节表示的。
    String ss="中国";
    byte[] bad=ss.getBytes("iso-8859-1");
    byte[] good=ss.getBytes("GBK");
    System.out.println(new String(bad,"iso-8859-1"));
    System.out.println(new String(good,"GBK"));可以看出使用iso-8859-1丢失了数据,肯定无法得到原始的字符串了。
    但是如果都是ascii码数据的话就不会丢失了。
      

  13.   

    对于中文被编码成了一个?号!
    ---------------------------------------
    你的意思是post,get中文信息时,中文被编码成一个个?号(这些?号算什么编码?)。那又如何还原为中文呢?(我很同意你的观点,但就是想不通这个问题)