asp接收ajax乱码_Asp中处理AJAX乱码问题总结
AJAX中的這樣寫法:
XMLHttpReq.open('get',"getsubcategory.asp?BigClassName="+BigClassName+"&number="+Math.random(),true);//get方法
的話如果是傳的是一個中文的話。那就會有亂碼了?怎么處理呢?
我發現了一個調試AJAX的方法,就是將服務器端的值傳回來就可以了。這樣就可以知道哦。這個值到底是多少了。
對AJAX中亂碼問題小議:
看了一篇網友的文章 受益不淺啊哈哈拿出來一起分享一下:
1,只要在ajax中有數據提交時,如果頁面編碼不是utf-8的,都應該對提交的數據進行編碼,js的編碼函數為escape()
2,在服務器端頁接收數據后進行解碼,然后對數據進行相關的處理后再編碼
3,返回到客戶端后再解碼
4,如果沒有提交數據,而是直接從服務器端獲取數據,那直接在服務器頁面設置Response.Charset="gb2312"即可,不用再編碼解碼
vbscript中分別對應js中的escape()和unescape()函數
客戶端通過escape(str)編碼? --->??? 服務器端解碼:他是用VbsEscape(data)'后面我會把這個方法源碼寫出來分享
[服務器端得到了解碼后的數據就可以進行操作了,比如進行SQL查詢之類的操作]
[就是說我們在URL中傳遞的就是二進制數據流,先在客戶端進行編碼處理? 到了服務器端由于 是二進制的數據所以要先進行解碼處理然后可以拿到真實的數據了,然后就可以進行操作]
處理完了之后服務器端就會將值傳送回去到客戶端那它也要進行編碼處理VbsEscape(data)
傳回到了客戶端也要進行解碼操作UnEscape()解碼處理。
哈哈,記得一點客戶端與服務器端的編碼與解碼處理。
附VB中的兩個函數:
'與javascript中的escape()等效
Function VbsEscape(str)
dim i,s,c,a
s=""
For i=1 to Len(str)
c=Mid(str,i,1)
a=ASCW(c)
If (a>=48 and a<=57) or (a>=65 and a<=90) or (a>=97 and a<=122) Then
s = s & c
ElseIf InStr("@*_+-./",c)>0 Then
s = s & c
ElseIf a>0 and a<16 Then
s = s & "%0" & Hex(a)
ElseIf a>=16 and a<256 Then
s = s & "%" & Hex(a)
Else
s = s & "%u" & Hex(a)
End If
Next
VbsEscape=s
End Function
'與javascript中的unescape()等效
Function VbsUnEscape(str)
Dim x
x=InStr(str,"%")
Do While x>0
VbsUnEscape=VbsUnEscape&Mid(str,1,x-1)
If LCase(Mid(str,x+1,1))="u" Then
VbsUnEscape=VbsUnEscape&ChrW(CLng("&H"&Mid(str,x+2,4)))
str=Mid(str,x+6)
Else
VbsUnEscape=VbsUnEscape&Chr(CLng("&H"&Mid(str,x+1,2)))
str=Mid(str,x+3)
End If
x=InStr(str,"%")
Loop
VbsUnEscape=VbsUnEscape&str
End Function
%>
確實給我感覺收獲不少,哈哈。相信以后在ASP中遇到 中文問題不會有什么困難處理了!
閱讀(1594) | 評論(0) | 轉發(0) |
總結
以上是生活随笔為你收集整理的asp接收ajax乱码_Asp中处理AJAX乱码问题总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 南方s730手簿说明书_最新S730手簿
- 下一篇: echars x轴单位_echarts