QT5中文乱码

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格式就行,不需要上面的设置。

 

posted @ 2016-12-04 23:15  细雨细语  阅读(7757)  评论(0编辑  收藏  举报