【Qt-22】Qt乱码问题解决

最近在Qt项目中遇到TCP通信接收数据乱码的问题,很是苦恼,经过多次尝试,终于得以解决。

感谢Qt TcpSocket 传递数据乱码显示_qt中socket接受到的客户端数据显示不出来-CSDN博客

彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)_XX風的博客-CSDN博客

1、VS运行中输出的汉字为乱码

在头文件中插入以下一行代码:

#pragma execution_character_set("utf-8"); 

【Qt-22】Qt乱码问题解决_第1张图片

2、TCP通信接收的数据为乱码

在main.cpp文件中插入以下代码:

#include 

//设置中文编码
#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 

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));

【Qt-22】Qt乱码问题解决_第2张图片

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