qt中文亂碼處理方法
阿新 • • 發佈:2020-12-23
技術標籤:qt/c/c++語言linux亂碼ubuntuqt
環境:Windows10
開發工具:VS2017,Qt5.14
1、介面現象
UI介面現象:
程式碼如下:
fLabCurFile=new QLabel; //用於顯示當前檔名的標籤
fLabCurFile->setMinimumWidth(150);
fLabCurFile->setText(QObject::tr("當前檔案:"));
ui->statusBar->addWidget(fLabCurFile);//新增到狀態列
2、配置系統字型
有遇到同樣問題的提供解決方案,設定系統字型為UTF-8,UTF-8 BOM設定為Add If Encoding IS UTF-8。
Tools->Options->Text Editor->Behavior:
配置好後,並未解決問題。再試,有文章總結出如下四種解決辦法,測試均通過,最後選3.4方法,問題解決。
3、解決方法
3.1、字元轉碼 QString::fromLocal8Bit
缺點,不能與QObject::tr同時使用。
fLabCurFile=new QLabel; //用於顯示當前檔名的標籤 fLabCurFile->setMinimumWidth(150); fLabCurFile->setText(QString::fromLocal8Bit("當前檔案:")); ui->statusBar->addWidget(fLabCurFile);//新增到狀態列
結果:
3.2、字元轉碼 QString::fromWCharArray
缺點,不能與QObject::tr同時使用。且字串需用L修飾。
fLabCurFile=new QLabel; //用於顯示當前檔名的標籤
fLabCurFile->setMinimumWidth(150);
fLabCurFile->setText(QString::fromWCharArray(L"當前檔案:"));
ui->statusBar->addWidget(fLabCurFile);//新增到狀態列
3.3、字元轉碼 QStringLiteral
缺點,不能與QObject::tr同時使用。
fLabCurFile=new QLabel; //用於顯示當前檔名的標籤
fLabCurFile->setMinimumWidth(150);
fLabCurFile->setText(QStringLiteral("當前檔案:"));
ui->statusBar->addWidget(fLabCurFile);//新增到狀態列
3.4、預編譯設定字符集編碼
在標頭檔案宣告處宣告:#pragma execution_character_set("utf-8")。優點:不用改程式碼。
fLabCurFile=new QLabel; //用於顯示當前檔名的標籤
fLabCurFile->setMinimumWidth(150);
fLabCurFile->setText(QObject::tr("當前檔案:"));
ui->statusBar->addWidget(fLabCurFile);//新增到狀態列