|
首先我们先预览一下Openwave V7 Simulator和WAPDisplayer V1.5查看实例的效果图。手机采用联通CDMA普天SCP-580调试通过,没有实机拍摄。

Openwave V7 Simulator预览的程序效果图

WAPDisplayer V1.5预览的程序效果图
程序用到的为Access2000数据库,结构设计如下所示。数据库文件保存为#WAPZJ.mdb,内含一个表,表名为WAPZJ。
按如下内容填写数据库

Index.asp 用于输入待查询字符的文件。
Index.asp文件代码
<% Response.ContentType = "text/vnd.wap.wml" %> <?xml version="1.0" encoding="gb2312"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapfourm.org/DTD/wml_1.1.xml"> <wml> <head> <meta http-equiv="Cache-Control" content="max-age=0"/> <meta http-equiv="Cache-control" content="no-cache" /> </head> <card id="Search" title="WAP中文字符传递"> <p> 欢迎使用中文WAP搜索<br/> 请输入关键词: <input name="KeyWord" type="text" value="手机" /> <br/> <do type="accept" label="查询"> <go href="Search.asp" method="post" accept-charset="gb2312"> <postfield name="KeyWord" value="$(KeyWord)" /> </go> </do> </p> </card> </wml>
Search.asp 用于进行查询,并将结果显示出来的文件。
Search.asp文件代码
<%'################################################### '程序编写:Bicyle '修改时间:2005-12-19 10:10 '文件归属:共享 '个人主页:http://wap.bicyle.org '###################################################%> <% Response.ContentType = "text/vnd.wap.wml" %> <?xml version="1.0" encoding="gb2312"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapfourm.org/DTD/wml_1.1.xml"> <wml> <head> <meta http-equiv="Cache-Control" content="max-age=0"/> <meta http-equiv="Cache-control" content="no-cache" /> </head> <card id="Login" title="WAP中文字符传递"> <p> <% Set Conn=Server.CreateObject("Adodb.Connection") DBPath = Server.MapPath("#WapZJ.mdb") Conn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath '接收中文字符。 Dim KeyWord KeyWord=Request("KeyWord") Dim SQL,Rs '注意下边的这句sql语句。有时候变量要用'引起来。 SQL = "SELECT * FROM WAPZJ WHERE Title Like '%" & KeyWord & "%'" &" Or Content Like '%" & KeyWord & "%'" Set Rs = Server.CreateObject("ADODB.RecordSet") Rs.Open SQL,Conn,1,3 If Rs.EOF then '对于使用Response.Write输出的语句好像必须要进行UTF-8转码,虽然声明了使用gb2312。 Response.Write Uni("没有结果") Response.Write "<do type='accept' label='Retry'>" Response.Write " <go href='Index.asp'/>" Response.Write "</do>" Else Response.Write Uni("标题:") & Uni(Rs("Title")) & "<br/>" Response.Write Uni("内容:") & Uni(Rs("Content")) End If %> <br/> <a title="确定" href="Index.asp">重新搜索</a> </p> </card> </wml> <% Rs.Close Set Rs=Nothing Conn.Close Set Conn = Nothing %> <% '以下是UTF-8转码的函数 Function Uni(Chinese) For I = 1 to Len (Chinese) A=Mid(Chinese, i, 1) Uni=uni & "&#x" & Hex(Ascw(a)) & ";" Next End Function %>
以上程序通过在Index.asp文件中输入需要查询的中文字符,然后通过Post的方式将变量传递给Search.asp文件,通过Request函数接收变量值,再利用Sql语句从数据库字段Title和Content的内容中进行相似查询,如果找到则将显示该条记录,找不到则提示没有结果。

以上是使用ASP+WML开发的一个中文字符传递在数据库查询中的简单应用,程序采用的是GB2312编码方式,如果您使用QuickWAP那么将可以轻松使用UTF-8的编码方式,您可以参考如下文章。 QuickWAP轻松解决WAP中文参数传递 http://download.enet.com.cn/blog/index.php?itemid=5686&catid=1
注意: 经过实际测试虽然文件代码已经声明使用GB2312编码方式,但是对于Response.Write输出的中文字符仍然需要UTF-8进行转码。 |