加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在c中获取正确编码的字符串

发布时间:2020-12-16 09:44:07 所属栏目:百科 来源:网络整理
导读:我之前问过类似的问题. 但我仍然在编码中遇到麻烦. 我试着尽可能地描述问题. 我有一个c客户端,通过TCP与c#服务进行通信. 现在我需要在Messagebox(Win32 API)中显示来自服务的消息. 由c#服务发送的字节是UTF-8编码的. 重要的是,c客户端只能在Windows系统上运
我之前问过类似的问题.
但我仍然在编码中遇到麻烦.
我试着尽可能地描述问题.

我有一个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);

如果文本包含类似ü??的聊天,则它们不会以正确的方式显示在消息框中.
如何在c中以UTF-8字符串形式接收消息?
有可能将char []转换为UTF-8字符串吗?

谢谢你的帮助

托比

解决方法

如果要在Windows中显示unicode字符,则需要将UTF8字符串转换为UTF16(较旧的UCS2),因为这是Windows处理的unicode标准.你用 MultiByteToWideChar功能做到这一点.

还要确保在包含Windows标头之前设置了#define UNICODE,以便MessageBox指向MessageBoxW或显式使用MessageBoxW.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读