今天做程序,发现jQuery无刷新ajax,发现一个问题传入编码为汉字,只是接收页面怎么处理都是乱码;
最终解决办法,先在传之前进行编码,然后获取后再进行解码!
所用到的函数:
<%
    '与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
%>




下面是本例:
发送页面的编码使用javascript中的escape()编码
   $("#Input").click(function(){
                 $.ajax({
                    type: "POST",
                    url: "LfCall.asp",
                    contentType: "application/x-www-form-urlencoded; charset=gb2312",
                    data: {Result:'Save',CallName:escape($("#Name").val()),CallPhone:escape($("#Phone").val()),CallContent:escape($("#Content").val())},
                    success: function(data,textStatus){
                       $("#lfcallboxcontent").html(data);
                   }
               });
    });






解码使用的是asp中的VbsEscape(str)来解码


   信息提交成功:<br />
   <%=VbsUnEscape(Request.Form("CallName"))%><br />
   <%=Request.Form("CallPhone")%><br />
   <%=VbsUnEscape(Request.Form("CallContent"))%>