我想在C#中的byte []数组中反序列化字节流。 byte []数组长度为8196个字节,并从TCP / IP连接获取其信息。
当我将该数组提供给System.Runtime.Serialization.Json.DataContractJsonSerializer的ReadObject方法时,它会抛出一个SerializationException,并显示消息“遇到意外字符'\ 0'”。
我该如何解决这个问题?
答案 0 :(得分: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();
修复了问题。也许类似的情况也适用于你的情况?