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

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

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="A") and (c="0") and (c="A") and (c<="Z"))) then isvalidhex=false:exit function end function

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