2011-06-10 41 views
0

我使用的是自動發現Zend的Soap服務器,這是我的代碼:Zend的Soap服務器返回一個UTF-8的錯誤

$wsdl = new Zend_Soap_Autodiscover(); 
    $wsdl->setClass('SoapParser'); 
    if (isset($_GET['wsdl'])) { 
     $wsdl->handle(); 
    } else { 
    $server = new Zend_Soap_Server('http://zzz.zz.zz/store.php?wsdl'); 
    $server->setClass('SoapParser'); 

    $server->setEncoding('UTF-8'); 
    $server->setObject(new SoapParser()); 
    $server->handle(); 
    } 

當我調用通過SOAP客戶端的一些方法,我收到此錯誤:

SOAP-ENV:ServerSOAP-錯誤:編碼:字符串 '00127920110531 XXX ZZZ大教堂67 AV仁\ xe9 ......' 不是一個合法的UTF-8字符串

的 「\ xe9」 是 「é」 ...源表是UTF-8

如果我改變

 $server->setEncoding('UTF-8'); 

 $server->setEncoding('ISO-8859-1') 

我沒有收到錯誤,但字符串不正確地分析,有似有字符...

任何想法?

+1

'0xe9'是'ISO-8859-1'中的'',而不是'UTF-8'。 – Benjamin 2011-06-10 09:13:16

回答

1

這不是您的服務器的問題,這是您的客戶端的問題。

您的客戶提交的是ISO-8859-1字符串,您可以在提交之前嘗試utf8_encode()數據。

如果當客戶端和服務器都使用相同的編碼時仍然看到奇怪的字符,那麼您可能有一個混合了多種編碼的源字符串。它是從單一來源構建的嗎?它在某個地方顯示正確嗎?

+0

你說得對,問題出在客戶端(第三方客戶端)。我試着用zend_client,它工作正常。謝謝 – salgua 2011-06-10 18:24:09

相關問題