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