QT中文乱码问题汇集

QT编译时提示以下信息:

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

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

解决办法如下:
第一步:确保编辑器是以UTF8形式编码保存。

第二步:在pro文件或CMakeFiles中添加编译选项,确保编译器编译的目标结果仍是utf8编码模式。

在pro文件中添加
win32:msvc{
QMAKE_CXXFLAGS += /source-charset:utf-8 /execution-charset:utf-8
}
在cmake中添加
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /utf-8")