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) |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值