用ASP开发WAP新闻系统--字符的过滤替换与其重要性
手机浏览器对页面的WML结构非常严格,只要页面出现一个不符合核定标准的字符,将会导致整个页面无法显示。因此,对“非法字符”进行规律替换,是非常必要的操作。这一课,我们就来讲一讲字符过滤。那些是所谓的“非法字符”,应该如何来避免呢!
打开配置文件config.asp,加入以下代码:
' //过滤字符
Function replaceStr(str)
Dim myStr
myStr = str
replaceStr = ""
If IsNull(myStr) Then
Exit Function
End If
myStr = Replace(myStr, "' ", "' ") ' ' 为单引号,为了避免在后面的&被替换掉,所以在这里先把单引号还原
myStr = Replace(myStr, "$", "¥") ' 在WML里面“$”符号是表示变量,所以将其替换成¥
myStr = Replace(myStr, "&", "&")
myStr = Replace(myStr, "", " ")
myStr = Replace(myStr, "<", "<")
myStr = Replace(myStr, ">", ">")
myStr = Replace(myStr, Chr(13), "
") ' 将回车转换成换行
replaceStr = myStr
End Function
单引号是因为会对数据库语句造成影响,所以如果在执行数据库语句之前,必须将单引号替换' ,而我们这里是把他还原。对于$&<>这些符号,主要是因为在WML里是特殊字符号,所以要显示时,必须将其解码。要重要强调的是“$”符号在WML里是表示变量,如果要显示“$”,需要写成“$$”,这样显示出来的就是一个“$”,不会让程序出错!当然,上面替换的时候,也可以将“¥”改为“$$”,但RMB我们还是习惯用¥这个符号了!
另外,在Ascii码表中,大于127小于178的这些符号,都有可能让手机无法正常显示页面,如果,要周全的话,也可以把这些符号给替换掉。在这里,我们就先不讨论了,大家视需要扩展一下吧!下面附上两张Ascii码表,希望对大家有所帮助!
Ascii码表(一)

Ascii码表(二)

下面,我们就在NewsShow.asp来调试一下这一段过滤字符的代码。
打开模拟器,输入地址:">
现在,我们将过滤的过程加到代码中去。
将Response.Write (rs(1)&"
=*=*=*=*=*=
"&Replace(content,chr(13),"
"))一行中的Replace(content,chr(13),"
")换成replaceStr(content),保存文件,再次刷新页面看看效果!嘿嘿,正常显示的页面又回来了!当然,你还可以试试其他的“特殊符号”!
最后,记得把收尾工作再完善一下哦,刚刚content=rs(2)&"<"要重新改回content=rs(2)。^_^