QTextCodec * BianMa = QTextCodec::codecForName ( "GBK" );
QMessageBox::information(this, "提示", BianMa->toUnicode("中文显示!"));
其实也可以通过QString定义的静态函数,先转换成Unicode类型:
QString::fromLocal8Bit("提示")
不过在Qt5中,提供了一个专门的处理宏,来支持中文常量,那就是QStringLiteral,但它只能处理常量。
QMessageBox::information(this, QString::fromLocal8Bit("提示"), QStringLiteral("中文显示"));
const char* info = "中文显示";//不支持
QString strInfo = QStringLiteral(info);//支持
QString strInfo = QString::fromLocal8Bit(info);
----------------------------
VS2015+QT5.7.1
有一天上面几种办法都不能正常显示中文了,直到找到下面这个解决办法。
# pragma execution_character_set("utf-8")
____________________________
我在a.cpp使用b.cpp的接口,向b传送一串中文字符串显示时,上面所以方法都显示乱码。
需要按上图把a.cpp和b.cpp文件都由UTF-8格式改为UTF-8无BOM格式就行,不需要上面的设置。