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

Java判断字符串是否是乱码(亲测可用)

创建时间:2017-06-08 投稿人: 浏览次数:2424

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

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

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

Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54     /**      * 判断字符是否是中文      *      * @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) {             return true;         }         return false;     }       /**      * 判断字符串是否是乱码      *      * @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();         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;                 }             }         }         float result = count / chLength;         if (result > 0.4) {             return true;         } else {             return false;         }       }       public static void main(String[] args) {         System.out.println(isMessyCode("韩顺平"));         System.out.println(isMessyCode("你好"));     }

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

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