asp,jquery,ajax中文亂碼解決辦法

來源:互聯網
上載者:User

aspweb伺服器不支援 response.charset

所以採用編碼

 

>1、只要在ajax中有資料提交時,如果頁面編碼不是utf-8的,都應該對提交的資料進行編碼,js的編碼函數為escape()
2、在伺服器端頁接收資料後進行解碼,然後對資料進行相關的處理後再編碼
3、返回到用戶端後再解碼
4、如果沒有提交資料,而是直接從伺服器端擷取資料,那直接在伺服器版面設定Response.Charset="gb2312"即可,不用再編碼解碼
vbscript中分別對應js中的escape()和unescape()函數

 程式碼<%
          '與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
%>來個示範:

用戶端頁:client.html

 程式碼<script>
    //jquery的post
    $.post
    (
        'server.asp',
        {
            Act:'DoSubmit',
            UserName:escape('西樓冷月'),//進行編碼
           WebSite:'www.chinacms.org'
        },
        function(data)
        {
            alert(unescape(data));//對返回資料進行解碼
        }
    );
    
</script>伺服器端頁:server.asp  程式碼<%
                Response.Charset="gb2312"
    Dim UserName,WebSite
    If Request.Form("Act")="DoSubmit" Then
                               UserName=Request.Form("UserName")
        WebSite =Request.Form("WebSite")

        '在伺服器端解碼
        UserName=VbsUnEscape(UserName)//解碼

        '處理資料
        '---省略資料處理部分

        '資料處理後輸出,先用VbsEscape()編碼
        'by www.chinacms.org
        Response.Write VbsEscape(UserName)
    End If
%>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.