首页 > 编程 > ASP > 正文

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

2024-05-04 11:10:00
字体:
来源:转载
供稿:网友

这篇文章主要介绍了ASP中只有UrlEncode,没有Urldecode问题的解决方法? ,需要的朋友可以参考下

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

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

 

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表