换种思路成功解决asp不能对日语字段进行模糊查询的问题[http://www.utosky.net]
Asp的模糊查询本来不是什么很难的事儿,但是若涉及到对包含日语字符的字段进行模糊查询的时候常常会出现莫名其妙的问题。这是由于中文版access对日语支持性能不好造成的。我们运用以下的方法成功地解决了这个问题。
1.解决思路
在access数据库中添加一个新字段,将原来字段中的日语字符转化为ascII代码(英文和数字保持不变)保存到新字段中,就可以解决access数据库对日语支持性差的问题。同时,还要对模糊查询部分作出改动,将关键词中的日语字符转化为ascII代码,英文和数字保持不变。然后用转换后的关键词对新添加的字段进行模糊查询即可解决查询问题。最后,在显示结果的时候,还是使用原来的日语字段。
2.解决步骤
2.1.制作包含文件
该包含文件将自动识别字符类型并进对日语(包括汉语)字符进行ascII转换。
-----------[文件名changetoasc.inc]---------------------------------
<%
function changetoasc(str)
dim result
dim l
dim i
l=len(str)
result=""
for i = 1 to l
if asc(mid(str,i,1))<0 or asc(mid(str,i,1))>126 then
‘若该字符是日语(或汉语)则变为ascII值。
result=result&asc(mid(str,i,1))
else
result=result&mid(str,i,1)
end if
next
changetoasc=result
end function
%>
-------------------------------------------------------------------------
2.2.在access数据库中新增一个字段用于存放我们新转换的日语字符。例如:access数据库原有“content”字段包含日语字符,我们就新增一个“content_asc”字段来存放转换后的内容。这里我们用下面的函数对access数据库中已有的日语字段进行转换并保存在新字段中。
-----------[文件名tool.asp]-------------------------------------------
<!--#include file=conn.asp -->
<!--#include file=changetoasc.inc -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<body>
<%
set rs=server.CreateObject("ADODB.RecordSet")
rs.Source="select * from 表名"
rs.Open rs.Source,conn,1,3
do while not rs.eof
content_asc=changetotext(rs("content"))
content_asc=trim(changetoasc(content_asc))
rs("content_asc")=content_asc
rs.update
rs.movenext
response.write content_asc&"<br>"
loop
rs.close
set rs=nothing
%>
</body>
</html>
<%
conn.close
set conn=nothing
%>
--------------------------------------------------------
在浏览器中输入该文件的URL执行文件,数据库即可完成转换。
2.3.对模糊查询的关键词进行转换(将日语字符转为ASCII,其他不变),然后用新的关键词在“content_asc”字段中进行模糊查询。要注意的是,显示结果时仍然用原来的日语字符字段“content”。
我们可以这样对关键词进行转换:
--------------------------------------------------------
<!--#include file=changetoasc.inc -->
…
<%
dim keyword
keyword=trim(Request("提交表单中关键字文本框的名称"))
…
set rs=server.CreateObject("ADODB.RecordSet")
rs.Source="select * from 表名 where [content_asc] like ‘%”&changetoasc(keyword)&”%’ "
rs.Open rs.Source,conn,1,1
…
%>
--------------------------------------------------------
这样就可以对日语字段进行模糊查询了。
2.4.最后还要对增加记录和修改记录的程序做些修改。简单地说,就是在增加或修改记录的同时,复制将要保存到[原始]日语字段“content”中的内容,先进行ascII转换,然后保存到新字段“content_asc”中即可。
我们可以做出如下修改:
----------------------------------------------------------
<!--#include file=changetoasc.inc -->
…
<%
…
content_asc=changetoasc(content)
‘ content 是即将要保存到[原始]日语字段“content”中的内容
…
set rs=server.createobject("adodb.recordset")
sql="select * from 表名"
rs.open sql,conn,1,3
rs.addnew
…
rs("content")=content
rs("content_asc")=content_asc
…
rs.update
rs.close
set rs=nothing
----------------------------------------------------------
这样就可以在增加或修改记录的同时,同步更新新字段“content_asc”的内容了。
若您还有什么疑问,请致信以下地址:wulonchia@sina.com
您也可以登陆我们的网站寻求解答。Http://www.utosky.net
问题点数:0、回复次数:7Top
1 楼alexzhang00(三角猫)回复于 2003-12-01 21:53:20 得分 0
拒绝日本的东西!!!!Top
2 楼h2high(菜乌?比菜鸟差一点:))回复于 2003-12-01 22:02:07 得分 0
me tooTop
3 楼par(吾知道)回复于 2003-12-02 14:12:24 得分 0
我鄙视日本帝国主义!但不鄙视知识.
谢谢楼主.
收藏,可能以后能用上.Top
4 楼wulonchia()回复于 2003-12-07 11:18:46 得分 0
自己来Top
5 楼wubaozhang()回复于 2003-12-07 12:38:32 得分 0
简单点,装个日文版的ACCESS不就得了!!!!
何必这么浪费资源!!Top
6 楼snowcloud2002(忧郁の蓝)回复于 2003-12-07 14:22:15 得分 0
哈哈Top
7 楼wulonchia()回复于 2003-12-10 12:53:23 得分 0
回复:wubaozhang(吴宝璋)
毕竟数据库中大部分的数据都是中文的,安装日文access同样不能解决其对中文记录的支持,浪费的资源更加巨大。Top




