首页 > 解决方案 > 对象的二进制序列化到具有特定 unicode 的文件

问题描述

我正在尝试序列化/反序列化一个对象。序列化运行良好,但反序列化不起作用。似乎这是一个 unicode 问题:有一个System.Text.DecoderFallbackException异常表示存在 Unicode 问题(法语到英语翻译):

Can not translate [FF] bytes to index 31 from the code page specified in Unicode.

我在关于该主题的deadlydog答案中使用了二进制序列化的两个函数。

问题是,如何在这段代码中指定反序列化和序列化的 Unicode?


编辑 :

最后我正在使用protobuf-net,这是我的功能:

    public static void WriteToBinaryFile<T>(string filePath, T objectToWrite, bool append = false)
    {
        using (var file = File.Open(filePath, append ? FileMode.Append : FileMode.Create))
        {
            Serializer.Serialize<T>(file, objectToWrite);
        }
    }


    public static T ReadFromBinaryFile<T>(string filePath)
    {
        using (var file = File.Open(filePath, FileMode.Open))
        {
            return Serializer.Deserialize<T>(file);
        }
    }

但是当我反序列化时出现错误:源数据中的无效字段:0

标签: c#serializationunicodebinaryprotobuf-net

解决方案


推荐阅读