protobuffer 中文反序列失败
作者:互联网
protobuffer序列化时内容中有中文可以成功,但是在反序列化时失败。原因:
1.序列化时中文未按国际标准UTF8 生成。
解决方法:
序列化时所有内容都UTF8 转换 就可以了。
附:宽字符与UTf8 互转:
// 宽 字符转UTF8
string EncodeUtf8(wstring in)
{
string s(in.length()*3+1,' ');
size_t len = ::WideCharToMultiByte(CP_UTF8, 0,
in.c_str(), in.length(),
&s[0], s.length(),
NULL, NULL);
s.resize(len);
return s;
}
// UTF8 转宽字符
wstring DecodeUtf8(string in)
{
wstring s(in.length(), _T(' '));
size_t len = ::MultiByteToWideChar(CP_UTF8, 0,
in.c_str(), in.length(),
&s[0], s.length());
s.resize(len);
return s;
}
标签:中文,string,UTF8,protobuffer,len,wstring,length,序列,序列化 来源: https://blog.csdn.net/xuq09/article/details/97259742