4

我正在使用 NuSOAP 与第三方 API 进行交互,包括运行数据库查询和检索结果。它的工作非常可靠,但我只是遇到了一个特定查询的问题。NuSOAP 没有返回结果,而是生成了一个错误: XML error parsing SOAP payload on line 2: Invalid character

原来,结果集包含以下内容: Léa Lincoln. 当我手动将重音字符更改为“常规”字符时,查询运行良好,NuSOAP 没有错误。

所以,我的问题是如何处理这个问题。我无法控制来自数据库的数据,并且我需要 NuSOAP 每次出现非标准字符时不要抛出错误并停止。谢谢。——杰夫

4

2 回答 2

5

经过搜索和测试后,似乎 CAZypedia 工作人员的破解是解决方案:

function nusoap_parser($xml,$encoding='UTF-8',$method='',$decode_utf8=true){
    parent::nusoap_base();

    // Hack by CAZypedia crew to fix character encoding of NCBI XML data from SOAP
    // This prevents non-English characters from causing the parser to choke.
    $xml = iconv("ISO-8859-1", "UTF-8//TRANSLIT", $xml);
    // End hack.
    $this->xml = $xml;
    $this->xml_encoding = $encoding;
    $this->method = $method;
    $this->decode_utf8 = $decode_utf8;

链接:http: //sourceforge.net/projects/nusoap/forums/forum/193579/topic/3718945

于 2012-06-22T22:38:21.317 回答
1

我遇到了同样的问题,我通过更改文件 nusoap.php 和 class.nusoap_base.php 中的行 var $soap_defencoding = 'UTF-8' 解决了这个问题

在这些文件中有两行,$soap_defencoding = 'UTF-8' 和 $soap_defencoding = 'ISO-8859-1',一行被注释,另一行没有。

我尝试将评论从一个选项移到另一个选项,它奏效了!

于 2016-05-28T02:35:34.507 回答