我正在尝试使用 winsock 通过网络发送文本数据包。但是,文本存储为 wchar_t,我需要能够将文本转换为字节 (char) 格式以便通过网络发送,然后再转换回 wchar_t。
我已经尝试使用 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 格式...
最佳答案
你的 friend 是:
WideCharToMultiByte,将 UTF-8 的代码页作为 MB 代码页传递。
MultiByteToWideChar,同上。
关于c++ - 使用 winsock 通过网络发送 Unicode (win32) 文本包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221496/