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;
}