0

C# の byte[] 配列内のバイト ストリームを逆シリアル化したいと考えています。byte[] 配列は 8196 バイトの長さで、TCP/IP 接続から情報を取得します。

その配列を System.Runtime.Serialization.Json.DataContractJsonSerializer の ReadObject メソッドに渡すと、「予期しない文字 '\0' に遭遇しました」というメッセージとともに SerializationException がスローされます。

どうすればこれを修正できますか?

4

1 に答える 1

0

文字列の読み方は?通常、'\0' エラーはエンコードの問題を示しています。バイトストリームは特定のタイプのエンコーディングを使用する可能性があり、独自のエンコーディングを強制するか、ストリームの実際のエンコーディングと一致しない特定のエンコーディングが想定されるように逆シリアル化しています。

http://social.msdn.microsoft.com/Forums/en/wcf/thread/b80c9aa7-a3d1-4aa0-b61a-35363cbc177eでは、次のコード行を置き換える状況について説明しています。

s = ASCIIEncoding.Default.GetString(ms.GetBuffer());

と:

        ms.Seek(0, SeekOrigin.Begin);
        StreamReader sr = new StreamReader(ms);
        s = sr.ReadToEnd();

問題を修正しました。おそらく、あなたの状況にも同様のことが当てはまりますか?

于 2012-04-26T20:10:05.860 に答える