假如是非utf8的常量字符串需要先转为utf8编码:
#include <iostream>
//设置执行字符集为utf8
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
# pragma execution_character_set("utf-8")
#endif
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
setlocale(LC_CTYPE, "chs");
// 非utf8的常量字符串需要先转为utf8编码
std::wcout << QString("好好学习").toStdWString()<< std::endl;
getchar();
return 1;
}
解决乱码有三个办法,第一个办法是编译时加入命令行参数,在 Qt 的 pro 文件中可以这样:
msvc:QMAKE_CXXFLAGS += -execution-charset:utf-8
第二个办法是在源文件中加入:
#pragma execution_character_set("utf-8")
VS2005、VS2008 这两个编译器都不支持 C++11,其他编译器支持 C++11
如果源代码保存为不带 BOM 的 utf-8。那需要告诉 VS2015 我们的编码格式是 utf-8,可以在 pro 文件中加入如下的代码:
msvc:QMAKE_CXXFLAGS += -source-charset:utf-8