ホームページ >バックエンド開発 >PHPチュートリアル >PHPがWebサービスインターフェースを呼び出す際の文字化けとエラーレポートの問題

PHPがWebサービスインターフェースを呼び出す際の文字化けとエラーレポートの問題

WBOY
WBOYオリジナル
2016-06-23 14:22:57994ブラウズ

$client = new SoapClient('http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl');
$client->soap_defencoding = 'UTF-8'; client->decode_utf8 = false;
$obj = $client->toTraditional Chinese(array('sText'=>''));
print_r($obj)
?> これは私が書いたものですインターネット上で公開されている簡体字中国語を繁体字中国語に変換する Web サービスを呼び出すコード。soap_defencoding を UTF-8 に指定し、decode_utf8 を false に指定しました。ただし、実行後、[Encoding: string 'xb8...' is not a.] というプロンプトが表示されます。 valid utf-8 string ]

これに対処する方法を見つけるのを手伝ってください

ディスカッションに返信(解決策)

エンコーディング: 文字列 'xb8...' は有効な utf-8 文字列ではありません

パラメータ渡された文字列は utf-8 ではありません


は、 array('sText'=>' ' が utf-8 ではないことを意味します
つまり、プログラム ファイルは utf-8 ではありません
ただし、 utf-8 の場合は、なぜわざわざ文字を宣言するのか


さらに
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false



エンコーディング: string 'xb8 ...' は有効な utf-8 文字列ではありません
渡されたパラメータは utf-8 文字列ではありません

つまり、array('sText'=>' ' は utf-8 文字列ではありません
それはあなたのプログラムを意味しますファイルは utf-8 ではありません
しかし、utf-8 である場合、なぜ文字セットを宣言するのでしょうか
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false ;
は nusoap の書き方
私も nusoap で書きましたが、php 実行時はエラーは報告されませんでしたが、やはり結果は文字化けしてしまいました。これはすべて正常であり、文字セットを宣言する必要はありません。
ファイルは utf-8 形式でのみ保存できますか?

SOAP は XML を介してデータを送信します
、XML のデフォルトの文字セットは utf-8 であるため、文字セットが宣言されていない場合は utf-8 になります

アプリケーションは実際に gbk を使用する必要があります (エラー メッセージから、次のようにすることができます)見てください)
したがって、nusoap を使用する場合は、 $client->soap_defencoding = 'gbk'; が必要です
または、nusoap のコードを変更します

PHP の組み込み SoapClient を使用する場合は、 $client = new SoapClient('http:/ /www .webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl', array('encoding'=>'GBK'));


追加するには:
サンプル コードは「person」を送信します
返されるはずです「?」

モデレータさん、詳しく教えていただきありがとうございます。私はこれに取り組んだばかりで、あまり詳しくありません

元の投稿者のおかげで、問題は解決しました

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。