【解決方法】WSDL NuSoapでUTF-8文字を取得する


こんにちは、みんな
私はPHPでNusoapライブラリを使用して作業し、WSDL技術を使用してC#にリクエストを送信します
次に、php ファイルまたはデータベースの char UTF-8 を C# に送信する必要があります。
他のエンコーディングは送信できますが、UTF-8 は送信できません

たとえば、PHP COE の場合: Peace
ただし C# では: سٓاÙ

解決策 1

はぁ! 難しいのは、「UTF-8 char」などというものは存在しないということです。 文字とコードワードが 1 対 1 で対応するのは UTF-32 だけです。 まず、Unicode と UTF の概念を理解する必要があります。

Unicode 標準は、「コード ポイント」と呼ばれる整数値と、コンピュータでの表示、サイズ、エンディアン性などに関係なく抽象的な数学的整数とみなされる整数値と、グリフから抽象化された文化的エンティティとして理解されるほとんどの文化の文字との間の単なる対応関係です。フォントやその他の詳細。 コンピュータによるキャラクターのプレゼンテーションは、UTF に組み込まれた別の側面です。 UTF はデータをバイト配列として扱います。 バイト指向の UTF-8 では、文字ごとにサイズが異なります。UTF-16 では、一部の文字は 16 ビット (ASCII であっても) を使用し、一部の文字は 32 ビットを使用します。「」と呼ばれる 16 ビットの単語のペアサロゲートペア」。

混乱を避けるには、以下を参照してください。
http://unicode.org/[^]、
http://unicode.org/faq/utf_bom.html[^]。

念のため、このトピックに関する私の他の回答を参照してください。 C# で ASCII から Unicode に変換するにはどうすればよいですか[^]。

Web サービスで Unicode テキストを渡すために特別なことを行う必要はありませんが、UTF ではなく Unicode テキストまたは文字を操作する必要があります。 SOAP を使用する場合、スープ ファイル/ストリームは UTF-8 をサポートします。 それは「HTTP-EQUIV」で規定される必要があります。

-SA

解決策 2

こんにちは、みんな
この問題を解決しました!!!

nusoap.php ファイル内で検索します

var $soap_defencoding = 'ISO-8859-1';

そしてvarに変更します

$soap_defencoding = 'UTF-8';

全てOK

解決策 3

こんにちは、これは私にとってうまくいきました:

$client = 新しい nusoap_client(URL, true);
$client->decode_utf8 = false;

よろしく

コメント

タイトルとURLをコピーしました