Qt TcpSocket 传递数据乱码显示

Qt TcpSocket 传递数据乱码显示

由于正在学习 Qt 网络编程 TcpSocket 通信,为了能更好的体验与理解 TcpSocket ,为此租用了腾讯云的轻量级服务器。在服务器上部署好 Qt 环境进行通讯发现,中文一直会出现乱码问题,现我已经我的解决我的问题,记录当时所遇到的问题以及解决方案。

  • 服务器上qtcreator 编译器显示中文乱码

    在这里插入图片描述

    环境为 Ubuntu 18.04

    解决方案:Ubuntu的中文乱码问题 [完美解决],这一篇博客直接解决了服务器中文乱码问题

  • 采用 TcpSocket 传递信息,但在服务器端接收到的中文为乱码

    在这里插入图片描述

    采用 tcpSocket->write(QString("...").toLatin1()) 方式传递数据,在服务器端接收到的中文乱码显示为 ‘’?"

    在这里插入图片描述

    采用 tcpSocket->write(QString("...").toLocal8Bit()) 方式传递数据,在服务器端接收到的中文乱码显示为 ‘’@"

    // 解决方案1
    
    //在发送端设置编码格式
    QByteArray Ary = "会出现乱码吗";
    QTextCodec *tc = QTextCodec::codecForName("GBK");
    tcpSocket->write(tc->fromUnicode(Ary));
    
    //在服务器接收端设置编码格式
    QByteArray t = sock->readAll();
    QTextCodec *tc = QTextCodec::codecForName("GBK");
    qDebug() << tc->toUnicode(t);
    
    //接收端和发送端的编码需要一致
    
    // 解决方案2,此方案中中文一定要为QString类型
    
    //发送端
    QByteArray by;
    by.append(QString("...."));
    by.append(QTime::currentTime().toString());
    tcpSocket->write(by);
    
    //接收端
    QByteArray k = sock->readAll();
    QString L = k;//输出时需要转化为QString,才能正常显示
    qDebug() << L; 
    

你可能感兴趣的:(Qt,Creator,qt,开发语言)