San*_*man 3 c++ winapi encoding utf-8 character-encoding
我之前问过类似的问题.但我仍然在使用c ++中的编码方面遇到麻烦.我试着尽可能地描述问题.
我有一个c ++客户端,通过TCP与c#服务进行通信.现在我需要在Messagebox(Win32 API)中显示来自服务的消息.由c#服务发送的字节是UTF-8编码的.
重要的是,c ++客户端只能在Windows系统上运行.
这是接收字节并显示Text的代码:
char buffer[1024];
int receivedBytes = recv(socketHandle, buffer, sizeof(buffer) - 1, 0);
char str[receivedBytes];
for (int index = 0; index < receivedBytes; index++)
{
str[index] = buffer[index];
}
MessageBox(mainWindow, (LPCTSTR)str, (LPCTSTR) "Fehler", MB_OK|MB_ICONERROR);
Run Code Online (Sandbox Code Playgroud)
如果文本包含类似üäö的聊天,则它们不会以正确的方式显示在消息框中.如何在c ++中以UTF-8字符串形式接收消息?有可能将char []转换为UTF-8字符串吗?
谢谢你的帮助
托比
如果要在Windows中显示unicode字符,则需要将UTF8字符串转换为UTF16(较旧的UCS2),因为这是Windows处理的unicode标准.您可以使用MultiByteToWideChar函数执行此操作.
还要确保在包含Windows标头之前设置了#define UNICODE,以便MessageBox指向MessageBoxW或显式使用MessageBoxW.
归档时间: |
|
查看次数: |
873 次 |
最近记录: |