ASP中只有UrlEncode,没有Urldecode问题的解决方法?

页面导航:首页 > 网络编程 > ASP编程 > ASP中只有UrlEncode,没有Urldecode问题的解决方法?

ASP中只有UrlEncode,没有Urldecode问题的解决方法?

来源:互联网 作者:脚本宝典 时间:2015-06-20 12:38 【

在ASP中传递参数时有一个很有用的系统函数Server.UrlEncode,可以将一些非字母数字的特殊符号转换成标准URL编码(其实就是16进制ASC码),这样就解决了参数传递问题,然后我以为也提供

在ASP中传递参数时有一个很有用的系统函数Server.UrlEncode,可以将一些非字母数字的特殊符号转换成标准URL编码(其实就是16进制ASC码),这样就解决了参数传递问题,然后我以为也提供了Server.UrlDecode,但使用后却发现程序报错,原来系统并没有提供这个我想象中的解码函数。怎幺办,自己动手吧。

UrlEncode的原理其实很简单,就是将特殊字符转换成16进制ASC码值,那么译码函数就只要将16进制ASC转回对应的字符就OK了。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Function URLDecode(enStr)          'URL解碼函數
 dim deStr
 dim c,i,v
 deStr=""
 for i=1 to len(enStr)
   c=Mid(enStr,i,1)
   if c="%" then
     v=eval("&h"+Mid(enStr,i+1,2))
     if v<128 then
       deStr=deStr&chr(v)
       i=i+2
     else
       if isvalidhex(mid(enstr,i,3)) then
         if isvalidhex(mid(enstr,i+3,3)) then
           v=eval("&h"+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))
           deStr=deStr&chr(v)
           i=i+5
         else
           v=eval("&h"+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1)))))
           deStr=deStr&chr(v)
           i=i+3
         end if
       else
         destr=destr&c
       end if
     end if
   else
     if c="+" then
       deStr=deStr&" "
     else
       deStr=deStr&c
     end if
   end if
 next
 URLDecode=deStr
end function
 
function isvalidhex(str)
 isvalidhex=true
 str=ucase(str)
 if len(str)<>3 then isvalidhex=false:exit function
 if left(str,1)<>"%" then isvalidhex=false:exit function
 c=mid(str,2,1)
 if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
 c=mid(str,3,1)
 if not (((c>="0") and (c<="9")) or ((c>="A") and (c<="Z"))) then isvalidhex=false:exit function
end function

经测试gb312格式的asp使用没有问题。

Tags:
本文链接:http://www.js-code.com/ASP/20150620758.html
上一篇:没有了

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<