• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php调用webservice接口,乱码及报错的问题

php 搞代码 3年前 (2022-01-23) 19次浏览 已收录 0个评论
文章目录[隐藏]

$client = new SoapClient(‘http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl’);
$client->soap_defencoding = ‘UTF-8’;
$client+本文来源gao@daima#com搞(%代@#码网

搞代gaodaima码

->decode_utf8 = false;
$obj = $client->toTraditionalChinese(array(‘sText’=>’个’));
print_r($obj);
?>
这个是我写的一个调用网上公开的简繁转换的webservice的代码,我已经指定了soap_defencoding为UTF-8,decode_utf8设置成false,但是执行了之后提示【Encoding: string ‘\xb8…’ is not a valid utf-8 string 】

请大家帮忙看看这个该怎么处理

回复讨论(解决方案)

Encoding: string ‘\xb8…’ is not a valid utf-8 string
传递的参数不是 utf-8 的串

就是说你的 array(‘sText’=>’ 个’ 不是utf-8 的
也就是说你的程序文件不是 utf-8 的
不过,如果是 utf-8 的,又何必声明字符集呢?

另外
$client->soap_defencoding = ‘UTF-8’;
$client->decode_utf8 = false;
是 nusoap 的写法

Encoding: string ‘\xb8…’ is not a valid utf-8 string
传递的参数不是 utf-8 的串

就是说你的 array(‘sText’=>’ 个’ 不是utf-8 的
也就是说你的程序文件不是 utf-8 的
不过,如果是 utf-8 的,又何必声明字符集呢?

另外
$client->soap_defencoding = ‘UTF-8’;
$client->decode_utf8 = false;
是 nusoap 的写法

我也用nusoap的方式写过,执行php虽然没有报错,但是出来的结果是???,也是乱码,我把soapclient方式和nusoap方式的两个文件都另存为utf-8的格式就都正常了,也不用声名字符集。
是否只能用utf-8格式的来保存文件才可以?

soap 是通过 xml 传递数据的
而 xml 的默认字符集是 utf-8,所以不声明字符集的情况下,就是 utf-8 了

你的应用实际是需要使用 gbk 的(从错误信息就可看到)
所以你用 nusoap 时需要 $client->soap_defencoding = ‘gbk’;
或修改 nusoap 的代码
使用 php 内置的 SoapClient 时
需要 $client = new SoapClient(‘http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl’, array(‘encoding’=>’GBK’));

补充一下:
你的示例代码发送一个“个”
应返回一个“?”

谢谢版主的详细指点,刚刚弄这块,了解的太少

感谢楼主,问题解决


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php调用webservice接口,乱码及报错的问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址