2

我有一条宽字符 XML 消息,需要通过 C++ 中的 Win32 套接字发送。

TCHAR wszBuffer[1024];

我应该在发送之前将sprintf(szSendBuffer, "%S", wszBuffer)宽字符缓冲区放到char数组中吗?

发送这个的正确方法是什么?

4

4 回答 4

2

将 wszBuffer 直接传递给套接字函数,将其转换为 char*,长度 = sizeof(wszBuffer),或 1024 * sizeof(TCHAR)。在这种情况下,缓冲区将按原样发送。

如果您想将此文本作为 ANSI 字符串发送,请通过任何字符串转换函数对其进行转换。sprintf 还可以,另一种方式是 W2A。但有些信息可能会丢失。

于 2010-08-24T10:58:13.227 回答
1

由于您正在处理 XML,因此您需要在通过套接字发送它之前以 UTF-8 或其他 XML 友好的字符编码(并在 XML 的序言中指定该编码)对其进行编码。

于 2010-08-24T22:46:03.697 回答
1

用于WideCharToMultiByte将其转换为 UTF-8(或任何其他char基于编码,只要您在 XML 文件中声明它)。

于 2010-08-26T05:49:41.473 回答
0

您可以简单地将其转换为 char*。另一方面,您可以简单地将接收到的缓冲区转换为 wchar_t*。

于 2010-08-24T10:58:09.327 回答