最近在Qt项目中遇到TCP通信接收数据乱码的问题,很是苦恼,经过多次尝试,终于得以解决。
感谢Qt TcpSocket 传递数据乱码显示_qt中socket接受到的客户端数据显示不出来-CSDN博客
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)_XX風的博客-CSDN博客
1、VS运行中输出的汉字为乱码
在头文件中插入以下一行代码:
#pragma execution_character_set("utf-8");
2、TCP通信接收的数据为乱码
在main.cpp文件中插入以下代码:
#include <QTextCodec>
//设置中文编码
#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
#if _MSC_VER
QTextCodec *codec = QTextCodec::codecForName("GBK");
#else
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
#endif
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
#else
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForLocale(codec);
#endif
tcp接收数据处添加以下内容:
#include <QTextCodec>
QByteArray buffer1;
buffer = tcpSocket_conf->readAll();
QTextCodec *tc = QTextCodec::codecForName("GBK");
QString cc = tc->toUnicode(buffer);
qDebug() << buffer;
qDebug() << cc;
输出:
tcp发送数据添加以下内容:
QByteArray result_send;
QTextCodec *tc = QTextCodec::codecForName("GBK");
tcpSocket_conf->write(tc->fromUnicode(result_send));