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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章