String str=new String(buf,0,i,"ISO-8859-1"); //对其用另一个方式解码
//重新编码后再用GBK解码
String strGBK=new String(str.getBytes("ISO-8859-1")/*重新编码*/,"GBK");
System.out.println(strGBK); //得到正确的中文字符
读入中文存入字节数组buf中,用ISO-8859-1解码,再用ISO..编码,则还能正确输出中文字符。那就是说:解码再编码是不会丢失数据的对吗?
但是反之不然,即先编码再解码:
String strGBK2=new String(buf,0,i); //得到GBK解码的strGBK2
String strLast=new String(strGBK2.getBytes("ISO-8859-1"),"ISO-8859-1");
System.out.println(strLast); //输出是乱码
上面对strGBK2先编码后解码,想看看过程是不是可逆,但输出是乱码!请问为什么先解后编和先编后解不是相互可逆的过程呢? |