Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C DataContractJsonSerializer中空字符的序列化异常_C#_.net_Json - Fatal编程技术网

C# C DataContractJsonSerializer中空字符的序列化异常

C# C DataContractJsonSerializer中空字符的序列化异常,c#,.net,json,C#,.net,Json,我想反序列化C中byte[]数组中的字节流。byte[]数组的长度为8196字节,并从TCP/IP连接获取其信息 当我将该数组赋给System.Runtime.Serialization.Json.DataContractJsonSerializer的ReadObject方法时,它会抛出一个SerializationException,消息为遇到意外字符“\0” 我如何修复此问题?您如何读取字符串?通常,“\0”错误指向编码问题。字节流可以使用特定类型的编码,您可以强制自己进行编码,也可以采用与

我想反序列化C中byte[]数组中的字节流。byte[]数组的长度为8196字节,并从TCP/IP连接获取其信息

当我将该数组赋给System.Runtime.Serialization.Json.DataContractJsonSerializer的ReadObject方法时,它会抛出一个SerializationException,消息为遇到意外字符“\0”


我如何修复此问题?

您如何读取字符串?通常,“\0”错误指向编码问题。字节流可以使用特定类型的编码,您可以强制自己进行编码,也可以采用与流的实际编码不一致的特定编码进行反序列化

描述替换以下代码行的情况:

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


解决了这个问题。也许类似的情况也适用于您的情况?

问题没有解决,但我已经通过创建一个与接收数据大小完全匹配的字节[]数组来解决问题。我自己从TCP/IP连接的流中创建字节数组。当我遇到一个以我的协议部分结尾的字节时,我会自己插入一个\0字符。我来自C语言背景,所以我没有意识到C字符串中可以包含\0个字符。
        ms.Seek(0, SeekOrigin.Begin);
        StreamReader sr = new StreamReader(ms);
        s = sr.ReadToEnd();