怎么没人参与呐,失败!我只好再说说我的看法:
   byte[]  bt=str.getBytes();//按默认编码获得字节流。
   String  str=new String("gb2312");//获得按gb2312编码的字符串
   java中String是按unicode编码处理的,获得的gb2312编码的字符串str又是如何编成unicode处理的呢?是不是java中编码处理可以这样来看:
                           (file.encoding)
str(机器的编码)--》(byte流)------------>String(file.encoding指定的编码)----String(unicode码)--》(虚拟机内部处理)-->String.getBytes()--->byte流--->机器的编码   

解决方案 »

  1.   

    Java用Unicode在内部表示所有数据类型的文本,包括:
    char,16比特字符类型
    java.lang.String,不可变串类型
    java.lang.StringBuffer,可变串类型
    java.io.Reader,用于读16比特字符的流类型
    java.io.Writer,用于写16比特字符的流类型
      

  2.   

    java.lang.String的构造函数String(byte[] bytes,int offset,int length,String encoding)和String(byte[] bytes,String encoding)是从指定编码方式的一串字节中创建一个Unicode串。
    java.lang.String的方法getBytes(String encoding)执行与上面方法相反的动作,它返回一个新的以指定编码方式表示一个串的字节数组。
    java.io.InputStreamReader和java.io.OutputStream跟上面讲的通理。你的方法应该是可行的。
      

  3.   

    楼上兄弟说法好像有问题吧?String(byte[] bytes,String encoding)是从指定编码方式的一串字节中创建一个Unicode串。按你说
    假如:jvm默认编码是iso-8859-1   byte[]  bt=str.getBytes();//按默认编码获得字节流。
       String  str=new String("gb2312");//获得按gb2312编码的字符串
       
    bt是iso-8859-1编码的字节数组,而new String("gb2312");又要指定gb2312编码从字节数组中创建了一个unicode串。可是刚才的字节数组是iso编码的阿!