再谈C#与C++通信之编码

在博客的这篇文章当中忽略了对中文字符串的处理.例如以下代码:

string str = "我a";
return str.Lenght;

以上代码会返回2,乍一看似乎是没有错的,我们数据包head的lenght会被置为2.
然后我们的对端C++服务器会读取两字节的数据来,最后的结果会出现截断的情况,这是为什么呢?
因为在UTF-8里面我们汉字是占用的3字节空间,str的长度实际为4,所以我们在C#客户端发送数据的时候应该这样来获取字符长度.

public static int getLenght(string str,Encoding encode)
{
       return encode.GetByteCount(str);
}