這篇文章主要介紹了ASP中只有UrlEncode,沒(méi)有Urldecode問(wèn)題的解決方法? ,需要的朋友可以參考下
在ASP中傳遞參數(shù)時(shí)有一個(gè)很有用的系統(tǒng)函數(shù)Server.UrlEncode,可以將一些非字母數(shù)字的特殊符號(hào)轉(zhuǎn)換成標(biāo)準(zhǔn)URL編碼(其實(shí)就是16進(jìn)制ASC碼),這樣就解決了參數(shù)傳遞問(wèn)題,然后我以為也提供了Server.UrlDecode,但使用后卻發(fā)現(xiàn)程序報(bào)錯(cuò),原來(lái)系統(tǒng)并沒(méi)有提供這個(gè)我想象中的解碼函數(shù)。怎幺辦,自己動(dòng)手吧。
UrlEncode的原理其實(shí)很簡(jiǎn)單,就是將特殊字符轉(zhuǎn)換成16進(jìn)制ASC碼值,那么譯碼函數(shù)就只要將16進(jìn)制ASC轉(zhuǎn)回對(duì)應(yīng)的字符就OK了。
- Function URLDecode(enStr) 'URL解碼函數(shù)
- 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
經(jīng)測(cè)試gb312格式的asp使用沒(méi)有問(wèn)題。
新聞熱點(diǎn)
疑難解答
圖片精選