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

ajax+php中文亂碼的解決

編輯:關於PHP編程

    由於XMLHTTP采用的是Unicode編碼上傳數據,而一般頁面采用的是gb2312,這就造成顯示頁面時產生亂碼。而當在獲取頁面時的XMLHttp返回的是utf-8編碼,這就造成了顯示產生亂碼。
    解決方法之一就是在PHP文件中顯示聲明為GB2312

    header("Content-Type:text/html;charset=GB2312");

    而對於發送到服務器的中文進行轉碼。
    如下
    $_POST["content"]=iconv("UTF-8","gb2312",$_POST["content"]);
    因而這樣可以解決亂碼問題

    方法二,是都采用UTF-8編碼。這裡就不多說了

    附測試例程
    客戶端

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>ajax post test</title>
    </head>
    <body>
    <div id="msg"></div>
    <script language="javascript">
    /**
    * 初始化一個xmlhttp對象
    */
    function InitAjax()
    {
    var ajax=false;
    try {
    ajax = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
    ajax = false;
    }
    }
    if (!ajax && typeof XMLHttpRequest!='undefined') {
    ajax = new XMLHttpRequest();
    }
    return ajax;
    }
    //在form 測試頁面內有一個表單,一個顯示的層
    function sendData()
    {
    var msg=document.getElementById("msg");
    var f=document.form1;
    var c=f.content.value;
    //接收數據的URL
    var url="dispmsg.php";
    var poststr="content="+c;
    var ajax=InitAjax();
    ajax.open("POST",url,true);
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    ajax.send(poststr);
    ajax.onreadystatechange=function(){
       if(ajax.readyState==4 && ajax.status==200){
       alert("I got something");
        msg.innerHTML=ajax.responseText;
       }
    }
    }

    </script>

    <form name='form1'>
    <input type="text" name='content' size=10>
    <input type="button" value="確定" onclick="sendData()"><!--我用submit時就出錯-->
    </form>
    </body>
    </html>

     

    服務器端
    <?php
    header("Content-Type:text/html;charset=GB2312");
    if($_POST['content'])
    {
    $_POST["content"]=iconv("UTF-8","gb2312",$_POST["content"]);
    print("內容是".$_POST['content']);
    }
    else
    {
    print("沒有內容發送");
    }
    ?>

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