Java判断字符串是否是乱码(亲测可用)
经过几天的努力,终于给爱酷学习网(http://www.icoolxue.com)加上了搜索引擎的支持,现在你可以搜索自己喜欢的视频教程啦。
PS:爱酷学习网是一个全面的视频教程网站,有各类计算机类视频如Java/C/C++/Android/Hiberante等等。
而由此也带来了一个问题,在用户输入查询字符串之后,虽然我已经想尽一切办法解决了乱码问题,但是真正在线上的时候,还是遇到了乱码,百思而不得其解:
可以看到,乱码问题一直存在,于是我在想,如果能判断搜索字符串如果是乱码的话,就不将该条搜索进行处理(意思就是说只搜索,而不将该字符串存放到数据库中),好吧,代码如下:
Java1 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("你好")); } |
相关代码已经注释,谢谢支持。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 实现同一个用户只能有一个登录
- 下一篇: Java String 字符编码原理,可以帮助理解乱码问题