牛骨文教育服务平台(让学习变的简单)
博文笔记

[JAVA]判断字符串是否为乱码

创建时间:2011-07-29 投稿人: 浏览次数:7872
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MessyCodeCheck {

  public 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;
  }

  public static boolean isMessyCode(String strName) {
    Pattern p = Pattern.compile("\s*|	*|
*|
*");
    Matcher m = p.matcher(strName);
    String after = m.replaceAll("");
    String temp = after.replaceAll("\p{P}", "");
    char[] ch = temp.trim().toCharArray();
    float chLength = ch.length;
    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;
          System.out.print(c);
        }
      }
    }
    float result = count / chLength;
    if (result > 0.4) {
      return true;
    } else {
      return false;
    }

  }

  public static void main(String[] args) {
    System.out.println(isMessyCode("*��JTP.jar�ļ����JTP�ļ���ȡ��ͼƬ��Դ"));
    System.out.println(isMessyCode("你好"));
  }
}


 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。