WAP中ASP传递中文字符查询数据库演示
首先我们先预览一下Openwave V7 Simulator和WAPDisplayer V1.5查看实例的效果图。手机采用联通CDMA普天SCP-580调试通过,没有实机拍摄。
Openwave V7 Simulator预览的程序效果图
WAPDisplayer V1.5预览的程序效果图
程序用到的为Access2000数据库,结构设计如下所示。数据库文件保存为#b,内含一个表,表名为WAPZJ。
按如下内容填写数据库
p 用于输入待查询字符的文件。
p文件代码
<%
ntentType = "text/l"
%>
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "">
<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="p" method="post" accept-charset="gb2312">
<postfield name="KeyWord" value="$(KeyWord)" />
</go>
</do>
</p>
</card>
</wml>
p 用于进行查询,并将结果显示出来的文件。
p文件代码
<%'###################################################
'程序编写:Bicyle
'修改时间:2005-12-19 10:10
'文件归属:共享
'个人主页:
'###################################################%>
<%
ntentType = "text/l"
%>
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "">
<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=eateObject("nnection")
DBPath = pPath("#b")
en "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 = eateObject("cordSet")
en SQL,Conn,1,3
If F then
'对于使用ite输出的语句好像必须要进行UTF-8转码,虽然声明了使用gb2312。
ite Uni("没有结果")
ite "<do type='accept' label='Retry'>"
ite " <go href='p'/>"
ite "</do>"
Else
ite Uni("标题:") & Uni(Rs("Title")) & "<br/>"
ite Uni("内容:") & Uni(Rs("Content"))
End If
%>
<br/>
<a title="确定" href="p">重新搜索</a>
</p>
</card>
</wml>
<%
ose
Set Rs=Nothing
ose
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
%>
以上程序通过在p文件中输入需要查询的中文字符,然后通过Post的方式将变量传递给p文件,通过Request函数接收变量值,再利用Sql语句从数据库字段Title和Content的内容中进行相似查询,如果找到则将显示该条记录,找不到则提示没有结果。
以上是使用ASP+WML开发的一个中文字符传递在数据库查询中的简单应用,程序采用的是GB2312编码方式,如果您使用QuickWAP那么将可以轻松使用UTF-8的编码方式,您可以参考如下文章。
QuickWAP轻松解决WAP中文参数传递
注意:
经过实际测试虽然文件代码已经声明使用GB2312编码方式,但是对于ite输出的中文字符仍然需要UTF-8进行转码。