如果用Form POST发送数据,不应该出问题!但是如果用XmlHttpRequest发送数据就可能出乱码!
如果数据量不大的情况可以考虑在客户端进行base64编码后发送到服务器,在服务器接收数据后
用base64_decode解码!另外关于XmlHttpRequest发送中文数据有乱码的解决方法网上有文章解释,可以去Google搜一下!

解决方案 »

  1.   

    楼上这位,我的Ajax是放在后台用的,所以数据量可能会很大..而且,在客户端怎么用base64编码?我的数据是用JS来直接在页面中取得,所以没法使用..另外,在Google和百度搜了一上午都没有找到适合我这种的..大都是说用iconv来转换编码..不知道还有什么办法没有?
      

  2.   

    使用最新版的xajax 可以解决乱码问题
    function testEncoding($name)
    {
    global $db;
            $objResponse = new xajaxResponse();
            $objResponse->setCharEncoding('GBK');
            $u_name=$db->GetOne("select u_name from w_user where u_name like '%$name%'");        $objResponse->addAssign('div1','innerHTML',$u_name);
            return $objResponse->getXML();
    }
    $tpl = new smarty();
    $xajax=new xajax();
    //$xajax->decodeUTF8InputOn();
    $xajax->bDebug=true;
    $xajax->registerFunction("testEncoding");$xajax->processRequests();
    $tpl->assign('xajaxcode',$xajax->getJavascript('class/public/xajax/'));//必须指明xajax.js文件的路径
      

  3.   

    base64有javascript的版本,不管怎么样,javascript用的是unicode,通过ajax肯定需要经过转码后才能成为GB2312,建议用escape(),然后都网上找PHP版本的unescace(),问题也可以解决
      

  4.   

    建议搂主去研究ms的webservice.htc
      

  5.   

    不知道Robjuan() 所说的xajax兼容Ajax不?发现版本太多了.Ajax.net啊乱七八糟一大堆...
    yuyuwhite() 所说的PHP的unescape,我在网上Google一把,都是要使用iconv的,我现在开发环境是windows,服务器的是unix的...总归是不好调试....
    唉,这个问题好难解决啊
      

  6.   

    win和linux有什么关系?都装上iconv不得了
      

  7.   

    在php页面将传过来的数据用iconv将utf-8转换成gb2312不就好了吗
      

  8.   

    有不用iconv转换utf-8到gb的类。
      

  9.   

    这个问题已经被我解决了,不需要服务器的iconv和mb的支持,你到phpe下载就行了
    http://club.phpe.net/index.php?act=ST&f=15&t=14337&s=