2009-06-03 12 views
2

私は現在、ソケット経由でC#アプリケーションに通信するC++アプリケーションをビルドしています。 私のC++アプリケーションはソケット経由でwchar_t *を送信します。ここでC++のwchar_tからC#へのソケット経由で

が送信されているものの概要は次のとおりです。ここで

<!-- Normal xml file-- 

は、私は反対側に受けるものです(私はバイト配列にstream.readを行うと UTF8Encoding.GetStringを(使用)に変換しますバイト配列を読み込み可能な文字列に変換する)

<\0!\0-\0-\0 \0N\0o\0r\0m\0a\0l\0 \0x\0m\0l\0 \0f\0i\0l\0e\0-\0- 

マーシャル問題ですか?あなたは何を言っていますか?なぜそれが拡張され、なぜUnicodeのcaracterがC#側に現れないのですか?

答えて

5

UTF-8ではなく、UTF-8を送信しているように見えます。wchar_tは基本的には16ビットタイプ(Windowsの場合)です。 。データをXDocumentまたはXmlDocumentに変換する場合は、バイナリデータを使用することをお勧めします。フレームワークでは、XMLファイル(IIRC)のUTF-16を自動検出する方法を知っています。

実際にUTF-16のときにXML宣言でUTF-8と宣言されていると、問題が発生する可能性があります。

また、C++側の適切なエンコーディングクラスをに、真ににUTF-8を送信してください。これには余分な処理時間がかかりますが、通常は帯域幅を節約します。

関連する問題