导语:在做ajax中的post时,发现在服务器端取得数据时总是乱码,网上看了些解决方法也搞不定,我post过去时是xml形式,由于乱码服务器端xml也解析不了或出错。本文讲解如何通过自定义函数URLDecode和URLEncode解决服务器端取得ajax中post的数据出现乱码的问题。
想到在post前先把它编码,到服务器端再解码,这样问题解决了。虽然ASP中的request会自动解码经过url编码的字符串,但是Request.BinaryRead(Request.TotalBytes)取得post数据时却不会解码,所以要进行解码。
我自定义了两个函数:URLDecode、URLEncode。分别是编码函数和解码函数,这样就能解决服务器获取的数据是乱码的问题。注意这和ASP自带的server.urlencode是不一样的哦,需要的朋友可以参考下。如果有问题,可以关注:http://www.webym.net/
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
URLEncode编码函数
这个与server.urlencode不一样之处是:server.urlencode会将html或xml等标签,也会进行编码,而下面这个函数不会。我是用下面的进行编码,再解码,因为我post时用xml的。
Function URLEncode(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 URLEncode = strReturn End Function
欢迎关注:http://www.webym.net/
声明:如需转载,请注明来源于www.webym.net并保留原文链接:http://www.webym.net/jiaocheng/149.html