上同调函子 2022-06-07 20:54 采纳率: 0%
浏览 243
已结题

Qt在TCP通信中接受中文乱码且不全

从服务端发送字符串给客户端,服务器端是阿里云的ubuntu系统(c++)来发送数据,客户端使用的是Qt来接收数据

服务器端代码:

string s="123abc你好";//要发送的字符串,包含汉字字母和数字
char*ss = new char[s.size()+1];
strcpy(ss,s.c_str());  //转换为char*
write(pinfo->fd,ss,len);

客户端代码:

    connect(socket, &QTcpSocket::readyRead, [=]()
    {
        QByteArray recvMsg = socket->readAll();
        qDebug()<<recvMsg;
    });

打印结果如下图

img

可见字母和数字“123abc”编码没有乱码,汉字"你好"变成了16进制,而且数据长度似乎也不对

我感觉问题有两个

1是中文变成16进制乱码?
2是数据长度不一致?

请问如何解决这两个问题

  • 写回答

3条回答 默认 最新

  • 赵4老师 2022-06-08 09:38
    关注
    获得2.70元问题酬金

    了解一下
    TCP拆包解包
    utf8编解码

    评论

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 创建了问题 6月7日