QT5 中文顯示亂碼問題的解決
阿新 • • 發佈:2019-01-10
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("我的音樂"));
即可解決問題