2012-06-22 33 views
4

我正在使用NuSOAP與第三方API進行交互,包括運行數據庫查詢和檢索結果。它一直在工作相當可靠,但我遇到了一個具體查詢的問題。 NuSOAP不會返回結果,而是生成一個錯誤:XML error parsing SOAP payload on line 2: Invalid character使用NuSOAP檢索結果時出現XML錯誤(無效字符)

原來,結果集包含以下內容:Léa Lincoln。當我手動將重音字符改爲「常規」字符時,查詢工作正常,沒有來自NuSOAP的錯誤。

所以,我的問題是如何處理這個未來。我無法控制來自數據庫的數據,而且我需要NuSOAP不會拋出錯誤,並在每次出現非標準字符時停止。謝謝。 --Jeff

+0

嘗試使用UTF-16編碼xml <?xml version =「1.0」encoding =「UTF-16」?>' – HamZa

+0

我無法更改來自服務器的內容。這是我可以做的東西,我可以從客戶端(即在NuSOAP?) – jalperin

+0

我不知道,試圖檢出文檔,順便說一下,我發現這個鏈接,這可能會幫助http://sourceforge.net/projects/nusoap/forums/論壇/ 193579 /主題/ 3718945 ...問候 – HamZa

回答

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

1

我有這個同樣的問題,我通過改變線路解決了它var $ soap_defencoding ='UTF-8'在文件nusoap.php和class.nusoap_base.php

在這些文件中有兩行$ soap_defencoding ='UTF-8'和$ soap_defencoding ='ISO-8859- 1',一個被評論,另一個不是。

我試着將註釋從一個選項移動到另一個選項,它工作!

相關問題