我想序列化一个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格式化程序意味着什么。
答案 0 :(得分:0)
数据表中的记录之一在文本字段中具有无效的Unicode字符。尝试通过一一过滤掉记录来隔离它。
在循环中,为数据表中的每个记录创建一个只有一个记录的新数据表。尝试序列化单记录DT。查看它将失败的记录。然后检查记录,看看有什么问题。