c++ - 使用 winsock 通过网络发送 Unicode (win32) 文本包?

标签 c++ winapi winsock

我正在尝试使用 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/

相关文章:

c++ - ram 中的共享内存或命名管道?

windows - MINIDUMP_TYPE 枚举值的哪种组合会给我最多 'complete' 小型转储?

c - 如何在 SYSTEM 下运行应用程序?

c++ - 列表中指针的问题

c - 没有连接请求时accept()返回SOCKET_ERROR

c++ - 准确设置 winsock 选择超时

c++ - lambda 可以作为 C++17 中的模板参数传递吗?

c++ - SDL 不检测箭头键

C++:用多个定界符拆分字符串并在结果中保留定界符?

c++ - 在 MAKEWORD/MAKEWPARAM 中使用 bool 值而不是 BOOL 值