当使用 使用MSVC编译器 时,会出现乱码,使用MinGw时却没有出现乱码,这样就可以确定只有 MSVC编译器会导致这种情况发生,这是因为编码问题,即UTF-8和GBK编码。
Qt Creator保存的文件使用的是UTF-8编码(是任何平台、任何语言都可以使用的跨平台的字符集),MSVC编译器虽然可以正常编译带BOM的UTF-8编码的源文件,但是生成的可执行文件的编码是 Windows 本地字符集,比如 GBK2312。也就是在可执行文件中,字符串“测试”是以GBK2312编码的,而可执行程序执行到这条语句时,对这个字符串却是以UTF-8解码的,这样就会出现乱码。
mingw时编码格式设为UTF-8,msvc时编码格式为带BOM的UTF-8编码。
解决办法:在pro文件中添加,声明代码块
msvc{
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8
}
注意:msvc必须是小写