本帖最后由 了无尘 于 2012-4-18 00:41 编辑
你应该是觉得解码一次utf-8之后在编码成utf-8还是原来的gbk编码,实际上已经不是了- public static void main(String[] args) throws Exception
- {
-
- String str="你好";
- byte[] buf=str.getBytes("GBK");
- String str2=new String(buf,"UTF-8");
- System.out.println(str2);
- //这里已经是乱码的UTF-8中文
-
- byte[] bas = str2.getBytes("UTF-8");
-
- System.out.println(Arrays.equals(buf, bas));
-
- String str3=new String(str2.getBytes("UTF-8"),"GBK");
- System.out.println(str3);//UTF-8里面码表和GBK的码表是不一样的所以查出来也是乱码
-
- }
复制代码 这里边打印的是false。。。
getBytes()方法,无论有没有参数都会编码,无参的默认是根据平台默认的编码方式编码,中间如果有一次错误的解码就没办法了,查表应该会出错,暂时也没办法解释这个问题
new String()这个方法,也是一样的,不管写不写解码方式,也都会解码。。。
楼上说的没错,只有ISO-8859-1这一种可以反转,其他的都不行 |