PHP - 传入WebService服务端带中文字符的序列化字串不能反序列化的解决方法

因工作需要,用了web服务,通过远程调用的方式来检索雅虎拍卖数据。前几天遇到一个问题,现在记录一下

客户端:

 $res = $this->client->call('Get_YahooData',array(serialize($params),$version,$flag));

 //some code

 $res = unserialize($res);

服务端

 $params = unserialize($params);

 //some code

 return serialize($result);

后发现如果$params数组元素包含中文(日文)的话,传到服务端的序列化字串的中文字符变成了乱码,无法进行反序列化。百度一下,发现了

http://www.discuz.net/thread-1489256-1-1.html这个帖子,加上base64_encode输出就OK了。

客户端代码改成:

 $res = $this->client->call('Get_YahooData',array(base64_encode(serialize($params)),$version,$flag));

 //some code

 $res = unserialize(base64_decode($res));

本地将中文字符串或者带中文字符元素的数组序列化,然后反序列化,不会出现乱码。

关于base64_encode和base64_decode介绍见:http://www.php.net/base64_encode#104801

上一篇:Android 手机卫士--构建服务端json、请求网络数据


下一篇:访问SAP的Domain的Value Range