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

ASP教程 2025-07-30

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

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

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

  1. FunctionURLDecode(enStr)'URL解碼函數
  2. dimdeStr
  3. dimc,i,v
  4. deStr=
  5. fori=1tolen(enStr)
  6. c=Mid(enStr,i,1)
  7. ifc=%then
  8. v=eval(&h+Mid(enStr,i+1,2))
  9. ifv<128then
  10. deStr=deStr&chr(v)
  11. i=i+2
  12. else
  13. ifisvalidhex(mid(enstr,i,3))then
  14. ifisvalidhex(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. endif
  23. else
  24. destr=destr&c
  25. endif
  26. endif
  27. else
  28. ifc=+then
  29. deStr=deStr&
  30. else
  31. deStr=deStr&c
  32. endif
  33. endif
  34. next
  35. URLDecode=deStr
  36. endfunction
  37. functionisvalidhex(str)
  38. isvalidhex=true
  39. str=ucase(str)
  40. iflen(str)<>3thenisvalidhex=false:exitfunction
  41. ifleft(str,1)<>%thenisvalidhex=false:exitfunction
  42. c=mid(str,2,1)
  43. ifnot(((c>=0)and(c<=9))or((c>=A)and(c<=Z)))thenisvalidhex=false:exitfunction
  44. c=mid(str,3,1)
  45. ifnot(((c>=0)and(c<=9))or((c>=A)and(c<=Z)))thenisvalidhex=false:exitfunction
  46. endfunction

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