怎么没人参与呐,失败!我只好再说说我的看法:
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流--->机器的编码
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流--->机器的编码
char,16比特字符类型
java.lang.String,不可变串类型
java.lang.StringBuffer,可变串类型
java.io.Reader,用于读16比特字符的流类型
java.io.Writer,用于写16比特字符的流类型
java.lang.String的方法getBytes(String encoding)执行与上面方法相反的动作,它返回一个新的以指定编码方式表示一个串的字节数组。
java.io.InputStreamReader和java.io.OutputStream跟上面讲的通理。你的方法应该是可行的。
假如:jvm默认编码是iso-8859-1 byte[] bt=str.getBytes();//按默认编码获得字节流。
String str=new String("gb2312");//获得按gb2312编码的字符串
bt是iso-8859-1编码的字节数组,而new String("gb2312");又要指定gb2312编码从字节数组中创建了一个unicode串。可是刚才的字节数组是iso编码的阿!