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 回答