2009-04-03 3 views
2

私はSoapServer + UTF-8でうまくプレイするためのPHPの取得に問題があります。誰かが英語以外の文字(つまり面白い引用符、アクセント記号付きの文字など)でSoap Requestを送信すると、SoapServerは「Bad Request」という例外をスローします。私はutf8_decodeでリクエストをデコードしようとしましたが、HTML Special Charactersでもテキストをエンコードしました。何も私のために働いていません。PHP、SoapServer、UTF-8、および英語以外の文字によるエンコーディングの問題を解決しましたか?

私は現時点では迷っているので、正しい方向にポイントを探しています。

答えて

3

両方SoapServerSoapClientがUTF-8エンコーディングを使用して初期化されていることを確認してください。

$client = new SoapClient("some.wsdl", array('encoding'=>'UTF-8')); 
$server = new SoapServer("some.wsdl", array('encoding'=>'UTF-8')); 

は「などの面白い引用符、アクセント付き文字、」とリクエストのXMLを行います検証?

0

明らかに次のステップは、というリクエストが実際にはUTF-8としてエンコードされたであることを確認することです。 WireSharkのようなネットワークスニファ(または普通の古いtelnetクライアントで動作するちょっとした作業でも)は、サーバーに渡される正確なデータを調べることができます。それを見て、それが実際に有効なUTF-8であることを確認してください。

+0

soap応答でutf8_encode()を使用すると役立ちます。 http://stackoverflow.com/questions/1347019/problems-with-special-characters-in-php-soap-client – StuffMaster

関連する問題