• 技术文章 >后端开发 >PHP问题

    php webservice 乱码怎么办

    藏色散人藏色散人2020-08-29 13:43:07原创724

    php webservice乱码的解决办法:首先打开“nusoap.php”文件;然后修改内容为“var $soap_defencoding = 'UTF-8';”以及“var $decode_utf8 = false;”即可。

    推荐:《PHP视频教程

    php 调用 webservice 中文乱码解决方案

    由于工作的需要,帮我的同事阿韬测试一下.net的webservice在PHP下的应用.于是开始上网找资料,发现很多php教程er都是用nusoap.于是下载一个回来.用它自带的例子修改一下.可在文章的后面的附件中找到下载地址.代码如下:

    <?php 
    require_once('../nusoap/lib/nusoap.php'); 
    $client = new soapclient('http://localhost/TestService/Service1.asmx?WSDL', true); 
    $err = $client->getError(); 
    if ($err) { 
    echo '<h2>Constructor error</h2><pre>' . $err . '</pre>'; 
    } 
    // Doc/lit parameters get wrapped 
    $param = array('str' => 'China'); 
    $result = $client->call('HelloWorld', array('parameters' => $param), '', '', false, true,'document','encoded'); 
    // Check for a fault 
    if ($client->fault) { 
    echo '<h2>Fault</h2><pre>'; 
    print_r($result); 
    echo '</pre>'; 
    } else { 
    // Check for errors 
    $err = $client->getError(); 
    if ($err) { 
      // Display the error 
      echo '<h2>Error</h2><pre>' . $err . '</pre>'; 
    } else { 
      // Display the result 
      echo '<h2>Result</h2><pre>'; 
      print_r($result); 
      echo '</pre>'; 
    } 
    } 
    echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>'; 
    echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';//开源代码最模板zuimoban.com 
    echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>'; 
    ?>

    如果我的webservice返回的内容中没有中文的话,则很简单就上面的例子就成功了.但是一个新的问题出现了,如果我的webservice中有中文的话,返回的值就变成了乱码.查看了一下response的结果,是正确的.应该是用nusoap处理的时候出现了问题.

    由于我没有安装PHP断点调试工具(其实我都不知道有没有这个工具).所以只能一个方法,一个方法看.看了一天,终于看完了.更改了nusoap.php两个地方就OK了.

    更改的地方:

    86行的:var $soap_defencoding = 'UTF-8';
    4998行的:var $decode_utf8 = false;

    不更改也可以,不过在调用的时候就必须指定编码.

    $client = new soapclient('http://localhost/TestService/Service1.asmx?WSDL', true); 
    $client->soap_defencoding = 'UTF-8'; 
    $client->soap_defencoding = 'UTF-8';

    这样的效果也是一样的,如果请求的时候参数有中文,只需用post或者get的方式传送就可以了,如果需要将带有中文的参数写在代码里面,则需要把编码转成UTF8.可能参考附件.

    以上就是php webservice 乱码怎么办的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:webservice php
    上一篇:php如何判断字符串是否有乱码 下一篇:php __call方法如何使用
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 如何解决php zip解压乱码的问题• 如何解决php导出xls乱码的问题• 如何解决php ie下载乱码的问题• php如何判断字符串是否有乱码
    1/1

    PHP中文网