Qt中文乱码解决方法(一步到位)
一、中文乱码解决方法一
1、QString str = QStringLiteral("1你好世界 abc"));//推荐2、QString str = QObject::tr("2你好世界 abc")); //推荐国际化软件使用,其余不推荐3、QString str = QString::fromLocal8Bit("3你好世界 abc");//不推荐,4、QString str = QString::fromLatin1("4你好世界 abc");//不推荐5、QString str = QString::fromUtf8("5你好世界 abc");//推荐6、QString str = QString::fromWCharArray(L"6你好世界 abc");//不推荐,字符串的编码取决于 wchar 的大小。7、QString str = QStringLiteral("7你好世界 abc"); //不推荐,8、QString str = (u8"8你好世界 abc"); //推荐 在中文字符前加上 u8,然后把中文字符用双引号包括 10、在头文件的类前面放入这一行,设置源文件的编码格式:# pragma execution_character_set("utf-8")
二、mian入口使用 QTextCodec 一步到位
int main(int argc, char *argv[]){QApplication a(argc, argv);#ifdef Q_OS_LINUX QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));#elseQTextCodec::setCodecForTr(QTextCodec::codecForName("system"));QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));#endifQMyTest w;w.show();return a.exec();}