QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决
生活随笔
收集整理的這篇文章主要介紹了
QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
QT學習筆記(四):Qt5+MSVC編譯 中文字符顯示亂碼問題解決
- 問題:
- 1、解決方法一:
- 2、解決方法二:
- 3、解決方法三:
- 4、解決方法四:
- 結果顯示:
Qt5+MSVC編譯 中文字符顯示亂碼。
現在為解決方法做個匯總:
問題:
main.cpp 代碼如下:
#include<QApplication> #include<QWidget> #include<QLabel>int main (int argc , char* argv[]) {QApplication a(argc ,argv );QWidget widget;widget.resize(350,250);widget.setWindowTitle("面朝大海 by 海子");QLabel label(&widget);label.move(120,120);label.setText(QObject::tr("面朝大海,春暖花開"));widget.show();return a.exec(); }顯示:
1、解決方法一:
保證源程序源碼文件是UTF-8,用以下預處理命令(及設置執行字符集,指示char的執行字符集是UTF-8編碼)
源文件或頭文件前面加上下面幾行代碼:
PS: 要注意使用此預處理命令解決中文亂碼問題,要求源碼必須保存成帶BOM的UTF-8格式:
及 QT Creator 中文本編碼設置為 Add UTF-8 BOM on Save
2、解決方法二:
main.cpp 加上==#include <qtextcodec.h>==,并修改代碼:
#include<QApplication> #include<QWidget> #include<QLabel> #include <qtextcodec.h>int main (int argc , char* argv[]) {QApplication a(argc ,argv );QWidget widget;widget.resize(350,250);// 增加:QTextCodec *codec = QTextCodec::codecForName("GBK"); // 修改:widget.setWindowTitle(codec->toUnicode("面朝大海 by 海子")); QLabel label(&widget);label.move(120,120);// 修改:label.setText(codec->toUnicode("面朝大海,春暖花開")); widget.show();return a.exec(); }3、解決方法三:
通過 定義的靜態函數QString::fromLocal8Bit,先轉換成Unicode類型:
#include<QApplication> #include<QWidget> #include<QLabel>int main (int argc , char* argv[]) {QApplication a(argc ,argv );QWidget widget;widget.resize(350,250); // 修改:widget.setWindowTitle(QString::fromLocal8Bit("面朝大海 by 海子")); QLabel label(&widget);label.move(120,120);// 修改:label.setText(QString::fromLocal8Bit("面朝大海,春暖花開")); widget.show();return a.exec(); }4、解決方法四:
通過Qt5中處理支持中文常量的宏: QStringLiteral(它只能處理中文常量 ,const char* 不行):
#include<QApplication> #include<QWidget> #include<QLabel>int main (int argc , char* argv[]) {QApplication a(argc ,argv );QWidget widget;widget.resize(350,250); // 修改:widget.setWindowTitle(QStringLiteral("面朝大海 by 海子")); QLabel label(&widget);label.move(120,120);// 修改:label.setText(QStringLiteral("面朝大海,春暖花開")); widget.show();return a.exec(); }結果顯示:
總結
以上是生活随笔為你收集整理的QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Modbus协议
- 下一篇: s3c2440移植MQTT