ホームページ  >  記事  >  バックエンド開発  >  PHP Webサービスが文字化けした場合はどうすればよいですか?

PHP Webサービスが文字化けした場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2020-08-28 09:51:011852ブラウズ

PHP Webサービスの文字化けコードの解決策: まず「nusoap.php」ファイルを開き、次に内容を「var $soap_defencoding = 'UTF-8';」および「var $decode_utf8 = false;」に変更します。

PHP Webサービスが文字化けした場合はどうすればよいですか?

推奨: 「PHP ビデオ チュートリアル

php 呼び出し Web サービスの中国語文字化け解決策

仕事の都合で、同僚の A Tao が PHP で .net Web サービスのアプリケーションをテストするのを手伝いました。それで、インターネットで情報を検索し始めたところ、多くの PHP チュートリアルで nusoap が使用されていることがわかり、ダウンロードしました。付属のサンプルを使用して変更してください。ダウンロード アドレスは記事の最後にある添付ファイルにあります。コードは次のとおりです。

<?php 
require_once(&#39;../nusoap/lib/nusoap.php&#39;); 
$client = new soapclient(&#39;http://localhost/TestService/Service1.asmx?WSDL&#39;, true); 
$err = $client->getError(); 
if ($err) { 
echo &#39;<h2>Constructor error</h2><pre class="brush:php;toolbar:false">&#39; . $err . &#39;
'; } // Doc/lit parameters get wrapped $param = array('str' => 'China'); $result = $client->call('HelloWorld', array('parameters' => $param), '', '', false, true,'document','encoded'); // Check for a fault if ($client->fault) { echo '

Fault

&#39;; 
print_r($result); 
echo &#39;
'; } else { // Check for errors $err = $client->getError(); if ($err) { // Display the error echo '

Error

&#39; . $err . &#39;
'; } else { // Display the result echo '

Result

&#39;; 
  print_r($result); 
  echo &#39;
'; } } echo '

Request

&#39; . htmlspecialchars($client->request, ENT_QUOTES) . &#39;
'; echo '

Response

&#39; . htmlspecialchars($client->response, ENT_QUOTES) . &#39;
';//开源代码最模板zuimoban.com echo '

Debug

&#39; . htmlspecialchars($client->debug_str, ENT_QUOTES) . &#39;
'; ?>

返されたコンテンツに中国語が含まれていない場合Web サービス、上記の例を使用するのは非常に簡単です。成功しました。しかし、新たな問題が発生しました。Web サービスに中国語が含まれている場合、戻り値が文字化けします。応答結果を確認したところ、正しい結果でした。表示されるはずです。 nusoapで処理する場合 Question.

PHPブレークポイントデバッグツールをインストールしていない(というか、そんなツールがあるのか​​すら知らない)ため、メソッドは1つしか見ることができません方法が 1 つあります。1 日眺めて、ようやく完成しました。nusoap を変更しました。php は OK です。

変更箇所:

86行的:var $soap_defencoding = &#39;UTF-8&#39;;
4998行的:var $decode_utf8 = false;

変更しなくても大丈夫ですが、変更する必要があります。呼び出し時にエンコーディングを指定します。

$client = new soapclient(&#39;http://localhost/TestService/Service1.asmx?WSDL&#39;, true); 
$client->soap_defencoding = &#39;UTF-8&#39;; 
$client->soap_defencoding = &#39;UTF-8&#39;;

こんな感じです。効果は同じです。リクエストのパラメータが中国語の場合は、post または get で送信してください。パラメータを中国語で記述する必要がある場合は、コードを編集するには、エンコードを UTF8 に変換する必要があります。添付ファイルを参照してください。 .

以上がPHP Webサービスが文字化けした場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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