我想反序列化 C# 中 byte[] 数组中的字节流。byte[] 数组长 8196 字节,从 TCP/IP 连接中获取信息。
当我将该数组提供给 System.Runtime.Serialization.Json.DataContractJsonSerializer 的 ReadObject 方法时,它会抛出一个带有消息“遇到意外字符 '\0'”的 SerializationException。
我该如何解决这个问题?
你是怎么读字符串的?通常,“\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();
解决了这个问题。也许类似的事情也适用于您的情况?