字符的编码与乱码

来源:《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();
                    }
                }
            }
        }

以上代码使用不同的编码格式进行测试,如果输出有正确的,那么就可以恢复。

不是所有的乱码形式都是可以恢复的,如果形式中有很多不能识别的字符(如?),
则很难恢复。另外,如果乱码是由于进行了多次解析和转换错误造成的,也很难恢复。

posted @ 2021-08-02 10:51  Jeff_blog  阅读(83)  评论(0编辑  收藏  举报