从服务端发送字符串给客户端,服务器端是阿里云的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;
});
打印结果如下图
可见字母和数字“123abc”编码没有乱码,汉字"你好"变成了16进制,而且数据长度似乎也不对
我感觉问题有两个
1是中文变成16进制乱码?
2是数据长度不一致?
请问如何解决这两个问题