跨平台開發中,中文編碼問題屢見不鮮。本文總結 Windows、ARM Linux(友善之臂 Tiny6410)下 Qt 4.6/4.8 的實測有效方案,助你避坑。
GB2312 編碼(XP 有效,Win7 可能失效)#include <QTextCodec>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
// ... 其他代碼
return a.exec();
}
使用時需包裹 tr("中文")。


#include <QTextCodec>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QTextCodec *codec = QTextCodec::codecForLocale(); // 系統默認編碼
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
// ...
return a.exec();
}


#include <QTextCodec>
// 在每個需要中文的 .cpp 函數開頭
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
調用:tr("我是中文!")

trUtf8()(簡潔,不一定通用)// 無需包含頭文件
QMessageBox::information(this, trUtf8("打開成功"), trUtf8("已成功打開串口:") + ui->portName_b->currentText());

原作者較少使用,建議參考 Windows 方案或自行搜索,通常設置 UTF-8 即可。
本文出自「李俊良 BKJIA 技術博客」,轉載請保留出處:原文鏈接