ASP中的URLEncode的解碼函式

2021-04-07 07:10:07 字數 1643 閱讀 8544

在玩ajax中的post時,發現在伺服器端取得資料時總是亂碼,網上看了些解決方法也搞不定,我post過去時是xml形式,由於亂碼伺服器端xml也解析不了或出錯。於是在post前先把它編碼,到伺服器端再解碼,這樣問題解決了,但是要是資料很大時估計會很影響速度,不知大家沒有辦法,告訴我一下。

雖然asp中的request會自動解碼經過url編碼的字串,但是request.binaryread(request.totalbytes)取得post資料時卻不會解碼,所以要進行解碼

下面是我找到的乙個asp中

server.urlencode函式的解碼函式

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=destr&chr(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=destr&c

end if

end if

next

urldecode=destr

end function

再附乙個編碼函式,這個與server.urlencode不一樣之處是:server.urlencode會將html或xml等標籤,如

也會進行編碼,而下面這個函式不會。我是用下面的進行編碼,再解碼,因為我用post時用xml的。

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

ASP中的URLEncode的解碼函式

有時在傳遞一些引數時,為了避免中文和一些特殊字元引起錯誤,我常把一些內容用server.urlencode功能編碼,編碼後的解碼就遇到了問題,在js中可以用unescape,在asp中怎麼解碼呢?我在網上搜尋了一下,找到如下方法,經過測試可以正確對中文進行解碼 function urldecode ...

urlencode中的空格編碼 20或者

轉轉轉,為了提醒自己,侵刪 url中的空格有時候被編碼成 20,有時候被編碼成加號 曾經迷糊過一段時間,後來查了下資料才搞明白。乙個url的基本組成部分包括協議 scheme 網域名稱,埠號,路徑和查詢字串 路徑引數和錨點標記就暫不考慮了 路徑和查詢字串之間用問號?分離。例如路徑為index,查詢字...

關於requests的urlencode問題

眾所周知,requests會對請求自動地進行urlencode,但這個自動進行的urlencode其實有很多不盡人意的地方 1.有時候,我們的data是已經urlencode過了的data,儘管我們不希望它進行urlencode,但它仍然會再urlencode一次,導致data面目全非 2.有時候,...