以下提供几个解决Qt在msvc中乱码的方式
qDebug() << QString::fromLocal8Bit("这是一个中文测试");
qDebug() << QStringLiteral("这是一个中文测试2");
qDebug() << QString::fromWCharArray(L"这是一个中文测试3");
const char *newParameter = u8"这是一个中文测试5";
qDebug() << QString(newParameter);
QString chinese = u8"这是中文测试";
QByteArray writeByte = QByteArray::fromHex(chinese.toUtf8().toHex());
QString str = QString::fromUtf8(writeByte);
qDebug() << str;
比较推荐使用第一种或者第二种
建议添加一个宏:如
#define C_STR(s) QStringLiteral(s)
所有中文全部使用宏C_STR即可,需要改更时直接改宏
还有一种方案是全局改,在每个用到中文的cpp最上方添加
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
不推荐使用,比较老的处理方式了