我想通過使用winsock的網絡發送文本數據包。然而,文本存儲爲wchar_t,我需要能夠將文本轉換爲字節(char)格式以通過網絡發送,然後將其轉換回wchar_t。使用winsock通過網絡發送Unicode(win32)文本數據包?
我已經嘗試過使用ostringstream並將我的wchar_t字符串轉換爲字節格式,但是當我嘗試去反轉時,我得到了一堆亂碼。
我在網上查找時似乎找不到任何答案,所以任何幫助都會非常感激。
好的,這裏有一些我玩過的代碼。
std::wstring text(ieS("Hello"));
std::ostringstream ostr;
ostr.imbue(std::locale());
ostr << text.c_str();
std::string text2 = ostr.str();
轉換爲std :: string以獲取char格式。
std::wostringstream wostr;
wostr.imbue(std::locale());
wostr << text2.c_str();
text = oss.str(); // gibberish
轉換回爲std :: wstring的獲得wchar_t的格式...
發佈一些代碼。 – 2010-11-19 02:08:39
您需要詳細瞭解Unicode是如何表示的 - 聽起來好像您對長度等有一些假設。當字節到達時,您需要提供足夠的信息來了解如何將字節解碼爲Unicode字符。 – 2010-11-19 02:17:17
在任何情況下,當事情都在網絡上時,您應該使用UTF-8。 – 2010-11-19 02:21:27