1. 程式人生 > >QT5 中文顯示亂碼問題的解決

QT5 中文顯示亂碼問題的解決

1. 之前QT4版本中文亂碼解決辦法是在main.cpp檔案加入:

#include <QTextCodec>

int main(int argc, char **argv)
{
    ......
    // 以下部分解決中文亂碼
    QTextCodec *codec = QTextCodec::codecForName("utf8"); //Linux
    QTextCodec::setCodecForTr(codec);
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    // 以上部分解決中文亂碼
    ......
}

針對Linux系統預設編碼是UTF8;而windows系統預設的編碼是GB2312/GBK等。需要對應的改變設定。

2. QT5版本之後,類QTextCodec已經取消了QTextCodec::setCodecForTr()和QTextCodec::setCodecForCString()這兩個函式

上述方法也不能解決中文亂碼的問題了。需要用新方法。

第一種:
先將對應的cpp檔案用記事本開啟,另存為UTF-8格式,然後在程式碼中,遇到中文字元,使用QStringLiteral("中文")進行修飾


第二種:
在標頭檔案申明中加上
#pragma execution_character_set("utf-8")

具體我遇到的情況如下:

然後將所有的QString::fromLocal8Bit修飾的中文改用QStringLiteral修飾

//    w.setWindowTitle(QString::fromLocal8Bit("我的音樂"));
    w.setWindowTitle(QStringLiteral("我的音樂"));

即可解決問題