用ASP開發(fā)的時(shí)候遇到一個(gè)解碼問題。雖然在ASP中使用Request獲取編碼過URL字符串會(huì)自動(dòng)解碼,但是Request.BinaryRead(Request.TotalBytes)取得Post數(shù)據(jù)時(shí)卻不會(huì)解碼,所以只能手動(dòng)進(jìn)行解碼。
ASP解碼函數(shù):
Function URLDecode(enStr)
dim deStr,strSpecial
dim c,i,v
deStr=""
strSpecial="!""#$%'()*+,.-_/:;=>?@[/]^`{|}~%"
for i=1 to len(enStr)
c=Mid(enStr,i,1)
if c="%" then
v=eval("h"+Mid(enStr,i+1,2))
if inStr(strSpecial,chr(v))>0 then
deStr=deStrchr(v)
i=i+2
else
v=eval("h"+ Mid(enStr,i+1,2) + Mid(enStr,i+4,2))
deStr=deStr chr(v)
i=i+5
end if
else
if c="+" then
deStr=deStr" "
else
deStr=deStrc
end if
end if
next
URLDecode=deStr
End function
只是個(gè)人愛好,自己研究了一下編碼的實(shí)現(xiàn)思路,最后自己寫了一個(gè)編碼函數(shù),提供大家參考。注:ASP有內(nèi)置的編碼函數(shù),即是Server.URLEncode。
ASP編碼函數(shù):
private Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) HFF Then
strReturn = strReturn ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode 0 Then
innerCode = innerCode + H10000
End If
Hight8 = (innerCode And HFF00)/ HFF
Low8 = innerCode And HFF
strReturn = strReturn "%" Hex(Hight8) "%" Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function
建議大家在中文編碼的時(shí)候,還是使用ASP 內(nèi)置的函數(shù)。雖然上面這個(gè)編碼函數(shù)測(cè)試過N 遍了,沒有發(fā)現(xiàn)問題,但是以防萬一存在Bug。
以上就是關(guān)于ASP編碼和解碼函數(shù),希望對(duì)大家的學(xué)習(xí)有所幫助。
您可能感興趣的文章:- asp.net下百度的編碼和解碼
- asp.C#實(shí)現(xiàn)圖片文件與base64string編碼解碼
- asp頁面和Asp.net頁面?zhèn)髦形膮?shù)UrlEncode編碼以及接收解碼
- ASP codepage 頁面編碼使用說明
- asp.net 頁面編碼常見問題小結(jié)
- asp.net URL編碼與解碼
- ASP中Utf-8與Gb2312編碼轉(zhuǎn)換亂碼問題的解決方法 頁面編碼聲明
- java基于AspectJ(面向切面編程)編碼示例分享
- Asp編碼優(yōu)化技巧