ss 是gbk编码字符串request = new String(ss.getBytes("GBK"), "UTF-8");
databyte = request.getBytes();
-----
request =ss;
databyte = request.getBytes("UTF-8");
----------------------------------------------------------
请问这两种方式获取的bytes的区别是什么?

解决方案 »

  1.   

    getBytes()指定编码就用指定的编码转换,
    不指定就默认是ISO-8859-1转换,跟进这个方法的源码看下就知道了!
      

  2.   

    字符编码确实很迷惑人,要出题的话,真的是把人晕个死去活来,没啥意思。
    但楼上说的并不对,getBytes()和String构造方法未指定字符集是按照当前操作系统的默认字符集操作的。比如我在中国大陆用windows就是GB系列的字符集,要验证这个问题很简单只要执行下面代码即可:
    byte[]b={(byte)0xcd,(byte)0xf5};
    String str=new String(b);
    String str1=new String(b,"gb2312");
    String str2=new String(b,"iso8859-1");
    String str3=new String(b,"utf-16be");
    输出,只要看看123哪个跟str一样就可以了。
      

  3.   

    字符编码确实很迷惑人,要出题的话,真的是把人晕个死去活来,没啥意思。
    但楼上说的并不对,getBytes()和String构造方法未指定字符集是按照当前操作系统的默认字符集操作的。比如我在中国大陆用windows就是GB系列的字符集,要验证这个问题很简单只要执行下面代码即可:
    byte[]b={(byte)0xcd,(byte)0xf5};
    String str=new String(b);
    String str1=new String(b,"gb2312");
    String str2=new String(b,"iso8859-1");
    String str3=new String(b,"utf-16be");
    输出,只要看看123哪个跟str一样就可以了。
    从你的回答中,我还是不明白我提出的问题中两种方式获取的byte是什么区别