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中遇到 中文问题不会有什么困难处理了!
阅读(1926) | 评论(0) | 转发(0) |