PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    ajax+php中文乱码的解决

    作者:admin来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:由于XMLHTTP采用的是Unicode编码上传数据,而一般页面采用的是gb2312,这就造成显示页面时产生乱码。而当在获取页面时的XMLHttp返回的是utf-...
    由于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("没有内容发送");
    }
    ?>

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-351-1.html
    相关热词搜索: 中文乱码 ajax php