java 判断是否存在中文乱码工具类

public class ChineseUtil {
 private static boolean isChinese(char c) { 
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); 
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS 
                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS 
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A 
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION 
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION 
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { 
            return true; 
        } 
        return false; 
    }  

    /**
      *
      * @param strName---------->判断是否存在乱码的参数
      * @return true or false :true 表示存在乱码,false表示不存在乱码
      */ 

public static boolean isMessyCode(String strName) { 
        Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*"); 
        Matcher m = p.matcher(strName); 
        String after = m.replaceAll(""); 
        String temp = after.replaceAll("\\p{P}", ""); 
        char[] ch = temp.trim().toCharArray(); 
        float chLength = 0 ; 
        float count = 0; 
        for (int i = 0; i < ch.length; i++) { 
            char c = ch[i]; 
            if (!Character.isLetterOrDigit(c)) { 
                if (!isChinese(c)) { 
                    count = count + 1; 
                } 
                chLength++;  
            } 
        } 
        float result = count / chLength ; 
        if (result > 0.4) { 
            return true; 
        } else { 
            return false; 
        } 
    } 
 
}

你可能感兴趣的:(乱码)