公司开发的PHP系统要调别人JAVA开发的一个WebService。我传了XML字符串给他,对方能接收到串,但是当XML属性值为中文时,显示为乱码。 如: <userName>张三 </UserName>,接收后,张三会为乱码。 初步判断是编码的问题:.NET系统是GB2312编码格式,JAVA系统是GBK编码格式,XML中设定的是UTF-8格式。 请问有没有人遇到过这个问题?有好的解决办法吗?谢谢! 

解决方案 »

  1.   

    我也是在完php调用Webservice我只是用的C#的,这个乱码问题应该是:没有指定编码嘛
    header("Content-Type: text/html;charset=utf-8");
    require_once('lib/nusoap.php');    //必须添加这个SOAP文件
    //$client = new soapclient('http://19.82.4.106:8099/Service1.asmx?wsdl', true);  //建立soap客户端
    $client = new soapclient('http://19.82.4.106:8001/OrderCenter.asmx?wsdl', true);  //建立soap客户端
    $client->soap_defencoding = 'utf-8';
    $client->decode_utf8 = false;
    你看这样行不。我开始在IE里面报错,也是乱码,最后这样设置了之后就行了
      

  2.   

    我设置位gbk的和不设置时好像没什么区别的
      

  3.   


    你用PHP传过去的时候设定XML是什么编码?另外,乱码是什么样子的?能贴上来看看吗
      

  4.   

    是对方能接收到的,我这边看不到,编码不对返回的结果就不对,传递时的编码是gbk的
      

  5.   

    对方处理的编码也是gbk,为什么传递过去的编码会是乱码呢?
      

  6.   

    php这边的编码是UTF-8的?  iconv("utf-8", "gb2312", $userName); 试试
      

  7.   

    php这边的编码是UTF-8的?  iconv("utf-8", "gb2312", $userName); 试试这个答案正确。楼主给分吧。
      

  8.   

    http://topic.csdn.net/u/20090224/16/8bca5443-11fd-45ed-bc3a-5190319afd2b.html
    看看上面的帖子
    注意这个解决办法:
    $this->mail->Subject    = "=?utf-8?B?".base64_encode($subject)."?=";
      

  9.   

    soap?soapClient的option可以设置encoding