QT乱码问题原因解决方案

使用Qt的时候,时常会遇到中文乱码问题,qDebug打印日志乱码,或者Widget界面乱码等等。

原因大多是因为使用MSVC编译器问题导致,而Qt 自带的MinGW一般不会出现乱码问题。

其核心原因呢,是因为编码问题,Qt Creator保存的文件使用的是UTF-8编码(是任何平台、任何语言都可以使用的跨平台的字符集),MSVC编译器虽然可以正常编译带BOM的UTF-8编码的源文件,但是生成的可执行文件的编码是 Windows 本地字符集,比如 GBK2312。

也就是在可执行文件中,字符串“测试”是以GBK2312编码的,而可执行程序执行到这条语句时,对这个字符串却是以UTF-8解码的,这样就会出现乱码。

一种方法是使用 QStringLiteral()宏或者QString::fromLocal8Bit()封装字符串,另一种方法是强制 MSVC 编译器生成的可执行文件使用UTF-8编码。

方案一
QString str = QStringLiteral(“目标字符串”);

方案二
在pro文件中添加
win32:msvc{
QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8
}
或者在头文件中添加
#if _MSC_VER >=1600
#pragma execution_character_set(“utf-8”)
#endif

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