经过几天的努力,终于给爱酷学习网(http://www.icoolxue.com)加上了搜索引擎的支持,现在你可以搜索自己喜欢的视频教程啦。 PS:爱酷学习网是一个全面的视频教程网站,有各类计算机类视频如Java/C/C++/Android/Hiberante等等。
而由此也带来了一个问题,在用户输入查询字符串之后,虽然我已经想尽一切办法解决了乱码问题,但是真正在线上的时候,还是遇到了乱码,百思而不得其解:
可以看到,乱码问题一直存在,于是我在想,如果能判断搜索字符串如果是乱码的话,就不将该条搜索进行处理(意思就是说只搜索,而不将该字符串存放到数据库中),好吧,代码如下:
Java /** * 判断字符是否是中文 * * @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("你好")); } 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 ( "你好" ) ) ; }相关代码已经注释,谢谢支持。
