程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> asp jquery中文亂碼的解決方法

asp jquery中文亂碼的解決方法

編輯:ASP技巧

今天在使用jquery檢測用戶名的時候,對英文和數字的用戶名檢測正確,但是對中文的時候,檢測出錯,經過在網上查詢一段時間,終於找到了原因,是亂碼問題,解決方法:

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved