2009/11/16 11:23:04
来源:不详
作者:未知
KesionCMS UTF-8版本如果网站添加的都是中文数据,搜索功能是正常可以使用的,但近期发现部分用户的网站是日文或是韩文,并出现无法使用搜索功能
经过分析这个问题是由于SQL数据库保存的数据格式是Unicode的原因,所以我们需要在查询语句前面加上N来转换成Unicode
知道原因后我们就来看看解决方法:
先来说说前台的搜索全站标签{$GetSearch}和文章搜索标签{$GetArticleSearch},这两个标签实际上生成的处理文件分别是/plus/search/index.asp 和 /plus/search.asp,我们就用dw等编辑工具分别打开这两个文件
/plus/search/index.asp这个文件我们找到以下构造sql语句的代码
If Not KS.IsNul(Key) Then
select case stype
case 100
if IsDate(Key) Then
If CInt(DataBaseType) = 1 Then
Param=Param & " And AddDate>='" & Key & " 00:00:00' and AddDate<='" &Key & " 23:59:59'"
else
Param=Param & " And AddDate>=#" & Key & " 00:00:00# and AddDate<=#" &Key& " 23:59:59#"
end if
End If
case 2
If ChannelID=102 Then
Param=Param & " And Title Like '%" & Key & "%'"
Else
Select Case KS.C_S(ChannelID,6)
case 1 Param=Param & " And ArticleContent Like '%" & Key & "%'"
case 2 Param=Param & " And PictureContent Like '%" & Key & "%'"
case 3 Param=Param & " And DownContent Like '%" & Key & "%'"
case 4 Param=Param & " And FlashContent Like '%" & Key & "%'"
case 5 Param=Param & " And ProIntro Like '%" & Key & "%'"
case 7 Param=Param & " And MovieContent Like '%" & Key & "%'"
case 8 Param=Param & " And GQContent Like '%" & Key & "%'"
End Select
End If
case 3
If ChannelID=102 Then
Param=Param & " And UserName Like '%" & Key & "%'"
Else
Param=Param & " And inputer Like '%" & Key & "%'"
End If
case else
Dim KeyParam
KeyParam=AutoKey(key,"Title")
If KeyParam<>"" Then
Param=Param & " And " & KeyParam
End If
end select
TopNum=0
Else
TopNum=1000 rem 没有输入关键词只列表最新1000条记录
End If
这里我们将所有 like 后台加上 N 即可
如
Param=Param & " And Title Like '%" & Key & "%'"
改成
Param=Param & " And Title Like N'%" & Key & "%'"
经过这样修改后,我们就可以使用搜索功能搜索日韩文了
/plus/search.asp这个文件类似,即在所有的like后面加上N即可
最后我们再看看后台的搜索功能,后台的搜索同样存在这个问题,同样我们用dw打开admin/ks.iteminfo.asp文件,找到以下代码
Select Case SearchType
Case 0:Param = Param & " And (Title like '%" & KeyWord & "%')"
Case 1:Param = Param & " And Inputer like '%" & KeyWord & "%'"
Case 2:Param = Param & " And KeyWords like '%" & KeyWord & "%'"
Case 3:Param = Param & " And Author like '%" & KeyWord & "%'"
End Select
并改成
Select Case SearchType
Case 0:Param = Param & " And (Title like N'%" & KeyWord & "%')"
Case 1:Param = Param & " And Inputer like N''%" & KeyWord & "%'"
Case 2:Param = Param & " And KeyWords like N''%" & KeyWord & "%'"
Case 3:Param = Param & " And Author like N'%" & KeyWord & "%'"
End Select
最后提醒下:还一个地方是后台添加文章时,查找相关文章的功能,需要修改下plus/ajaxs.asp,修改方法同上,即所有like后台加N
好了,经过以上的修改你的utf-8 sql版本已经具备搜索日文和韩文的功能了.如果你是access请不要修改,因为她默认就是支持的,不然会出错的.
【本站声明】
1、本站文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系。
2、本网站不对文章中所涉及的内容真实性、准确性、可靠性负责,仅系客观性描述,如您需要了解该类商品/服务详细的资讯,请您直接与该类商品/服务的提供者联系。
KESION 科汛软件
KESION 科汛软件是国内领先的在线教育软件及私域社交电商软件服务提供商,长期专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。
公司核心产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化独立部署品牌网校和在线教育咨询等。KESION 不断通过技术创新,提供产品和服务,助力企业向数字化转型,通过科技驱动商业革新,让商业变得更智慧!