序列化数据表会引发奇怪的异常

时间:2018-11-06 09:41:08

标签: c# serialization binaryformatter

我想序列化一个Datatable,其中包含其他几个数据表。过去,我从未遇到过这段代码的问题:

System.IO.FileStream file = new System.IO.FileStream(fName, System.IO.FileMode.CreateNew);
System.IO.StreamWriter writer = new System.IO.StreamWriter(file);
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();

try{
    bf.Serialize(writer.BaseStream, dt);
}catch(System.Exception ex){throw new System.Exception("Error serializing data stack!" + System.Environment.NewLine + "Error details: " + ex.Message);}

writer.Close();
writer.Dispose();

file.Close();
file.Dispose();

但是这次,我收到了一个奇怪的文本异常(抱歉-刚用德语获得了它):

  

序列化数据堆栈时出错!   错误详细信息:Das Ersatzzeichenpaar(0xDB8C,0xAD3)和ungültig。恩·霍斯(Ein hohes Ersatzzeichen)(0xD800-0xDBFF)艾斯·帕特(Ein Hohes Ersatzzeichen)(0xDC00-0xDFFF)

您可以使用以下方法进行翻译:

  

替换字符(0xDB8C,0xAD3)无效。高替代字符必须始终与低替代字符(0xDC00-0xDFFF)配对。

我真的不知道使用binare格式化程序意味着什么。

1 个答案:

答案 0 :(得分:0)

数据表中的记录之一在文本字段中具有无效的Unicode字符。尝试通过一一过滤掉记录来隔离它。

在循环中,为数据表中的每个记录创建一个只有一个记录的新数据表。尝试序列化单记录DT。查看它将失败的记录。然后检查记录,看看有什么问题。