NuSoap调用WebService出现乱码的解决办法

NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService。它是一个开源软件,是完全采用PHP语言编写的、通过HTTP收发SOAP消息的一系列PHP类。而使用NuSoap 调用.NET WebService或J2EE  WebService的时候可能都会遇到中文乱码问题,下面介绍这一问题的出现的原因和相应的解决方法。

 

NuSoap调用WebService出现乱码的原因:

  通常我们进行WebService开发时都是用的UTF-8编码,这时我们需要设置:

//$client是一个soapclient对象
$client->soap_defencoding = 'utf-8';

 同时,需要让xml以同样的编码方式传递:

$client->xml_encoding = 'utf-8';

 至此应该是一切正常了才对,但是我们在输出结果的时候,却发现返回的是乱码。

  NuSoap调用WebService出现乱码的解决方法:

  实际上,开启了调试功能的朋友,相信会发现$client->response返回的是正确的结果,为什么$result = $client->call($action, array('parameters' => $param)); 却是乱码呢?

  研究过NuSoap代码会发现,当xml_encoding设置为UTF-8时,NuSoap会检测decode_utf8的设置,如果为true,会执行 PHP 里面的utf8_decode函数,而NuSoap默认为true,因此,我们需要设置:

$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'utf-8';

 这样一设置,乱码的问题就解决了。

你可能感兴趣的:(编程,PHP,xml,webservice,SOAP)