在玩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.有時候,...