PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP基础 >> 基础文章 >> 

PHP中使用NuSOAP调用Web Service乱码问题及其解决方法

PHP中使用NuSOAP调用Web Service乱码问题及其解决方法

来源:PHP程序员站  作者:PHP程序员站  发布时间:2011-03-02
在PHP中使用Web服务,经常用到NuSOAP。 NuSOAP 是 PHP 环境下的 WEB 服务编程工具,用于创建或调用 WEB 服务。它是一个开源软件,完全由PHP语言编写,由一系列 PHP 类组成,不需要扩展库的支持,这种特性使得 NuSOAP 可以用于所有的 PHP 环境,不受服务器安全设置的影

在PHP中使用Web服务,经常用到NuSOAP。

NuSOAP 是 PHP 环境下的 WEB 服务编程工具,用于创建或调用 WEB 服务。它是一个开源软件,完全由PHP语言编写,由一系列  PHP 类组成,不需要扩展库的支持,这种特性使得 NuSOAP 可以用于所有的 PHP 环境,不受服务器安全设置的影响。

许多使用 NuSOAP 调用 .NET Web Service 的朋友可能都遇到过中文乱码问题,本文介绍这一问题的出现的原因和相应的解决方法。

NuSOAP 调用 Web Service 出现乱码的原因:

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

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

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

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

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

NuSOAP 调用 Web Service 出现乱码的解决方法:

实际上,开启了调试功能的朋友,相信会发现 $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';

 



延伸阅读:
PHP5实现webservice简单教程
什么是NuSOAP
NuSOAP教程
NuSOAP构建基于PHP的SOAP服务
NuSOAP与PHPRPC比较
使用nusoap时需要注意的地方
Tags: NuSOAP   webservice   乱码  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号