asp 里面沒有urldecode函數,好象aspx里有吧,我不太清楚,但asp里面還是用得很多。在網上查找了有別人寫的urldecode函數,但是這個函數有錯誤,而且在一些方面寫得比較難理解。而且有錯誤,當里面有生僻雙字節文字時就會產生錯誤,如“乄”經urlencoder后為“%81W”,解碼就不能成功。
其實雙字節編碼在這里只要把"W"也編成16進制ASC碼就可以。
知識點:計算機里的cookie也是經過urlencode編碼的,所以urldecode對破解cookie也很有用呵。
下面是源代碼:
Function URLDecode(enStr) 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
你用此方法解碼“%81W”看看,可以了。
當然,你還可以玩點小段,使之成為自己的一種字符串加密方式。
|