字符的编码与乱码
来源:《Java编程的逻辑》
public static void recover(String str)
throws UnsupportedEncodingException{
String[] charsets = new String[]{
"windows-1252", "GB18030", "Big5", "UTF-8"};
for(int i=0; i<charsets.length; i++){
for(int j=0; j<charsets.length; j++){
if(i! =j){
String s = new String(str.getBytes(charsets[i]), charsets[j]);
System.out.println("---- 原来编码(A)假设是: "
+charsets[j]+", 被错误解读为了(B): "+charsets[i]);
System.out.println(s);
System.out.println();
}
}
}
}
以上代码使用不同的编码格式进行测试,如果输出有正确的,那么就可以恢复。
不是所有的乱码形式都是可以恢复的,如果形式中有很多不能识别的字符(如?),
则很难恢复。另外,如果乱码是由于进行了多次解析和转换错误造成的,也很难恢复。