【发布时间】:2018-10-07 22:41:44
【问题描述】:
我正在努力寻找一种有效的方法来将可能包含 unicode 和非 unicode 字符的字符串序列化为二进制数组,然后将其序列化为必须使用 C++ 反序列化的文件。
我已经在 C++ 中实现了一个序列化器/反序列化器,我用它来完成我的大部分序列化,它可以处理 unicode 和非 unicode 字符(基本上我将非 unicode 字符转换为它们的 unicode 等效项并将所有内容序列化为 unicode字符串,不是最有效的方法,因为现在每个字符串每个字符都有 2 个字节但可以工作)。
我想要实现的是将任意字符串转换为每个字符串 2 个字节,然后我可以从 C++ 反序列化。
实现我所寻找的最有效的方法是什么?
此外,任何关于我序列化字符串方式的建议当然都会得到很好的接受。
【问题讨论】:
-
Encoding.Unicode.GetBytes("my string") -
对不起@Evk,你的评论是正确的(不敢相信我尝试了每个编码错过的Unicode......)但我不能接受评论作为答案:(。如果你添加它作为答案,我很乐意接受,但现在我会接受 kinimod 的回答
-
这不是你不能接受的问题,主要是你得到了答案。请注意,您可能会考虑改用 UTF-8(.net 中的
Encoding.Unicode是 UTF-16),因为 UTF-8 将 ascii 范围编码为一个字节,并且该范围很常见。为此,您当然需要调整 C++ 部分。 -
是的,事实上我使用的是 UTF-8,每个字符只得到 1 个字节(使用 ASCII 字符进行测试)。我想知道我应该如何在 C++ 端调整我的代码,因为它可以节省大部分字符串的一半空间
-
我敢打赌 C++ 有自己的标准编码方式,所以“我已经在 C++ 中实现了一个序列化器/反序列化器”应该是不必要的
标签: c# c++ string serialization unicode