将字节数组反序列化为utf8如何知道每个字符何时开始/结束?

时间:2017-12-10 23:24:46

标签: c# string serialization utf-8 deserialization

我有点困惑网络如何做到这一点。我在C#中有一个字符串,并将其序列化为utf-8。但根据utf-8,每个角色都会占用"可能" 1到4个字节。

因此,如果我的服务器通过网络接收这个字节数组并反序列化它知道它的某个大小的utf8字符串。它如何知道每个字符要正确转换多少字节?

我是否必须在协议中包含每个字符串的总字节数,例如:

[message length][char byte length=1][2][char byte length=2][56][123][ ... etc...]

或者这是不必要的?

1 个答案:

答案 0 :(得分:3)

UTF-8对组成字符的位所需的字节数进行编码。阅读Wikipedia上的说明;只有单字节代码点以零位开始。只有两个字节的代码点从位110开始,只有多字节代码点内的字节才以10开头。