CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

换种思路成功解决asp不能对日语字段进行模糊查询的问题[http://www.utosky.net]

楼主wulonchia()2003-12-01 21:34:04 在 Web 开发 / ASP 提问

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

相关问题

  • 还是asp 字段值!!!!
  • asp按字段排序
  • ASP怎樣搜索備註型字段?
  • Asp 如何读取字段长度
  • asp:HyperLinkField 字段去掉空格问题.
  • ASP是不是用了SQL别名字段后,就不能读出TEXT字段?
  • access200中有些字段的值为空,如何在asp中和非空字段一样显示出来?
  • 用ASP 怎么才能知道access数据库中的一个字段是否是自动编号的字段?
  • ASP中显示数据库图象字段的问题?
  • 关于sql Server的image字段在Asp中显示的问题

关键词

得分解答快速导航

  • 帖主:wulonchia

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo