Java判断字符串是否是乱码

来源:互联网 发布:淘宝卖出的钱在哪里 编辑:程序博客网 时间:2024/04/30 12:10

转自:http://blog.icoolxue.com/java-to-determine-whether-a-string-is-garbled-pro-testing-available/

经过几天的努力,终于给爱酷学习网(http://www.icoolxue.com)加上了搜索引擎的支持,现在你可以搜索自己喜欢的视频教程啦。
PS:爱酷学习网是一个全面的视频教程网站,有各类计算机类视频如Java/C/C++/Android/Hiberante等等。

而由此也带来了一个问题,在用户输入查询字符串之后,虽然我已经想尽一切办法解决了乱码问题,但是真正在线上的时候,还是遇到了乱码,百思而不得其解:

可以看到,乱码问题一直存在,于是我在想,如果能判断搜索字符串如果是乱码的话,就不将该条搜索进行处理(意思就是说只搜索,而不将该字符串存放到数据库中),好吧,代码如下:

/**
 * 判断字符是否是中文
 *
 * @param c 字符
 * @return 是否是中文
 */
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) {
        returntrue;
    }
    returnfalse;
}
 
/**
 * 判断字符串是否是乱码
 *
 * @param strName 字符串
 * @return 是否是乱码
 */
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();
    floatchLength = ch.length;
    floatcount = 0;
    for(int i = 0; i < ch.length; i++) {
        charc = ch[i];
        if(!Character.isLetterOrDigit(c)) {
            if(!isChinese(c)) {
                count = count +1;
            }
        }
    }
    floatresult = count / chLength;
    if(result > 0.4) {
        returntrue;
    }else {
        returnfalse;
    }
 
}
 
public static void main(String[] args) {
    System.out.println(isMessyCode("韩顺平"));
    System.out.println(isMessyCode("你好"));
}

相关代码已经注释,谢谢支持。


0 0