新学WDDX用来传递人员姓名,住址等参数,发现出现字串有中文后,wddx_deserialize()失效, 英文则一切正常;中文用iconv也转换过,还是没用。 抓狂中, wddx不能传递中文还有什么用,请各位大侠指点一下,感激。

解决方案 »

  1.   

    怎么不能?你编码的问题吧?<?php
    header("content-type:text/html;charset=utf-8");
    $text = "中国人民";
    $packet = wddx_serialize_value($text);
    $header = '<?xml version="1.0" encoding="utf-8"?>';
    $newText = wddx_deserialize($header . $packet);
    echo "Packet: $packet\n";
    echo "Deserialized: $newText\n";
      

  2.   

    用你的代码直接执行了也不行阿.   deserialize后还是乱码.  再帮我看看呢 , 是不是我php.ini有问题.
      

  3.   


    文件编码和代码中声明的编码不一致。请把你的文件保存为utf-8格式的再测试
    或者你统一换成gbk的
      

  4.   

    谢谢关心!  我文件是以UTF格式保存的, 还专门下了内码查看器确认了一下. 
    结果还是这样 , 显示Packet很正常,可Deserialized就是出现乱码. 
    奇怪的很.
      

  5.   


    看下是否有bom头,保存为utf-8无bom格式的试试。
      

  6.   

    数据端:
    <?php
       header("content-type:text/html;charset=utf-8");
       
      $sfzh='111111111111111111';
      $name="大宝";
      
      $packet_id=wddx_packet_start("info");
      wddx_add_vars($packet_id, "name","sfzh");
      $packet_out = wddx_packet_end($packet_id);
      
      echo $packet_out;
    ?>  访问端
    <?php
         
         header("content-type:text/html;charset=utf-8");
     
         $url_gen='http://192.168.1.10/test.php';
         $packet=implode("",file($url_gen));
     
         $header="<?xml version='1.0' encoding='utf-8'?>";
     
         print_r(wddx_deserialize($header.$packet));
    ?>  
      

  7.   

    我在访问端 echo $packet显示正常, 但wddx_deserialize($packet)显示就是乱码
      

  8.   

    问题已解决, 用urlencode()/urldecode 转化一下.  多谢^_^