Qt5下socket传输中文字符乱码的问题

先贴代码

server端部分代码

QString msg = TextEdit->toPlainText();
qDebug()<length()<int length = 0;
if(msg=="")
{
    return;
}
    length=udpSocket->writeDatagram(msg.toLocal8Bit(),msg.toLocal8Bit().length(),QHostAddress::Broadcast,port);
if(length!=msg.toLocal8Bit().length())
{
    return;
}

client端部分代码

while(udpsocket->hasPendingDatagrams())//判断udpsocket中是否有数据报可读
{
    QByteArray datagram;
    datagram.resize(udpsocket->pendingDatagramSize());
    udpsocket->readDatagram(datagram.data(),datagram.size());//读取第一个数据报

    QString msg = QString::fromLocal8Bit(datagram.data());
    ReceiveTextEdit->insertPlainText(msg+"\n");
    qDebug()<

Qt默认的编码格式为utf-8(在工具->选项->文本编辑器中可以查看)
解决乱码问题其实只需要同意Server端和Client端的字符编码格式就好了
上述代码中我将获取的文本msg用toLocal8Bit()转换,故在client端要调用fromLocal8Bit()函数来接收
其实也可以换成至此中文的toUtf8()和fromUtf8()函数

这里写图片描述
上图是我传输“哈哈哈”中文字符时qDebug输出的数据

你可能感兴趣的:(Qt/C++)