日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决

發布時間:2024/7/23 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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編碼)
源文件或頭文件前面加上下面幾行代碼:

#ifdef WIN32 #pragma execution_character_set("utf-8") #endif

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编译 中文字符显示乱码问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。