关于websocket通讯解码(乱码)问题

xhlu 2019-12-30 06:08:30
最近学习websocket通讯,从网上找了demo(c++实现websocket服务器),好不容易编译成功了,但是发现两个问题,
1.服务器只能发送英文信息,一发出中文信息就出错,浏览器提示:“WebSocket connection to 'ws://127.0.0.1:9999/' failed: Could not decode a text frame as UTF-8.“;
2.浏览器端能发送中英文信息但是服务器端显示的中文信息是乱码(请看下图)

请问一下各位大神这是什么原因?
...全文
2583 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
歲冄茹ミ歌644 2021-10-09
  • 打赏
  • 举报
回复

img


有大佬知道怎么解析这个乱码吗

baitxgt 2020-04-11
  • 打赏
  • 举报
回复
发送端按UTF8编码数据
smwhotjay 2020-04-02
  • 打赏
  • 举报
回复

编码混乱 。

如果是接收到utf8. 你控制台直接打印是会乱码的,因为win32是 ansi/unicode. utf8要转码。
xhlu 2020-04-02
  • 打赏
  • 举报
回复
引用 6 楼 公共马甲0315 的回复:
就是字符集编码问题:c++需要调用 WideCharToMultiByte完成UTF-8的转换,否则中文就是乱码。

是字符集编码问题,谢谢
公共马甲0315 2020-01-17
  • 打赏
  • 举报
回复
就是字符集编码问题:c++需要调用 WideCharToMultiByte完成UTF-8的转换,否则中文就是乱码。
xhlu 2019-12-31
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
发送端按UTF8编码数据

浏览器端的话,只是加了这句<meta charset="UTF-8">;
服务器端的话,在项目属性中设置了字符集是“使用Unicode字符集”
代码中encode函数如下(网上找的,不是很懂)
void respondClient(SOCKET sockClient, byte charb[], int length, boolean finalFragment) {
byte buf[100] = "";
int first = 0x00;
cout << "first:" << first << endl;
int tmp = 0;
if (finalFragment) {
first = first + 0x80;
cout << "first:" << first << endl;

//first = first + 0x1;
first = first + 0x2;
cout << "first:" << first << endl;
}
buf[0] = first;
tmp = 1;
cout << ">>>>>>>>>>>>>>>>>>>>>>>数组长度:" << length << endl;
unsigned int nuNum = (unsigned)length;
if (length < 126) {
buf[1] = length;
tmp = 2;
}
else if (length < 65536) {
buf[1] = 126;
buf[2] = nuNum >> 8;
buf[3] = length & 0xFF;
tmp = 4;
}
else {
//数据长度超过65536
buf[1] = 127;
buf[2] = 0;
buf[3] = 0;
buf[4] = 0;
buf[5] = 0;
buf[6] = nuNum >> 24;
buf[7] = nuNum >> 16;
buf[8] = nuNum >> 8;
buf[9] = nuNum & 0xFF;
tmp = 10;
}
cout << "tmp:" << tmp << endl;
for (int i = 0; i < length; i++) {
buf[tmp + i] = charb[i];
printf("要发送的数据字节:%d\n", charb[i]);
}
char charbuf[100] = "";
memcpy(charbuf, buf, length + tmp);
send(sockClient, charbuf, 100, 0);
}

麻烦帮我看一下哪里错了?
zgl7903 2019-12-30
  • 打赏
  • 举报
回复
发送端按UTF8编码数据
schlafenhamster 2019-12-30
  • 打赏
  • 举报
回复
防止 2字节汉字 被 切开 !

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧