要开始全面将Qt的代码翻译成UTF8 BOM编码了。
下面是一些资料:
1、引用自:
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)_利白的博客-CSDN博客_qt utf-8
#include <QTextCodec>int main(int argc, char *argv[])
{QApplication a(argc, argv);//设置中文字体 a.setFont(QFont("Microsoft Yahei", 9));//设置中文编码
#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
#if _MSC_VERQTextCodec *codec = QTextCodec::codecForName("GBK");
#elseQTextCodec *codec = QTextCodec::codecForName("UTF-8");
#endifQTextCodec::setCodecForLocale(codec);QTextCodec::setCodecForCStrings(codec);QTextCodec::setCodecForTr(codec);
#elseQTextCodec *codec = QTextCodec::codecForName("UTF-8");QTextCodec::setCodecForLocale(codec);
#endifreturn a.exec();
}
测试案例:
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
# pragma execution_character_set("utf-8")
#endif#include <QApplication>
#include <QFont>
#include <QTextCodec>
#include <QPushButton>
#include <QDebug>
#include <QString>int main(int argc, char *argv[])
{QApplication a(argc, argv);//设置中文字体 a.setFont(QFont("Microsoft Yahei", 9));//设置中文编码
#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
#if _MSC_VERQTextCodec *codec = QTextCodec::codecForName("gbk");
#elseQTextCodec *codec = QTextCodec::codecForName("utf-8");
#endifQTextCodec::setCodecForLocale(codec);QTextCodec::setCodecForCStrings(codec);QTextCodec::setCodecForTr(codec);
#elseQTextCodec *codec = QTextCodec::codecForName("utf-8");QTextCodec::setCodecForLocale(codec);
#endifQString str(QObject::tr("1中文")); #<<正常显示qDebug() << str;qDebug() << QStringLiteral("2中文"); #<<乱码qDebug() << QString::fromLatin1("3中文"); #<<乱码qDebug() << QString::fromLocal8Bit("4中文"); #<<正常显示qDebug() << QString::fromUtf8("5中文"); #<<正常显示qDebug() << QString::fromWCharArray(L"6中文"); #<<正常显示return a.exec();
}
2.方案二
使用宏 #pragma execution_character_set("utf-8") 结合 QString::fromUtf8("5中文");
这样还可以在不同的系统语言下实现编码正常显示