欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt向ini文件寫入中文出現(xiàn)亂碼問題的解決方法詳解

 更新時間:2023年12月28日 11:26:34   作者:xiongpursuit88  
這篇文章主要為大家詳細介紹了當Qt向ini文件寫入中文出現(xiàn)亂碼問題時的解決方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

現(xiàn)象描述

Qt中向ini文件寫中文出現(xiàn)亂碼問題,代碼如下:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    mSetting = new QSettings("vdacfg.ini", QSettings::IniFormat);
}

void MainWindow::writeConfig()
{
    mSetting->setValue("student/name", "xiongfei");
    mSetting->setValue("student/age", "42");
    mSetting->setValue("student/sex", "男");

    mSetting->setValue("teacher/name", "劉春花");
    mSetting->setValue("teacher/age", "42");
    mSetting->setValue("teacher/major", "語文");
}

可是,打開vdacfg.ini文件,結(jié)果如下:

其中有中文的地方,sex,name,major都變成了十六進制串。并且剛好這些十六進制串就是對應(yīng)中文的UTF-8編碼結(jié)果。

例如,劉春花就是0x5218 0x66250x82b1。

原因分析

當通過QSettings類寫入ini文件時,必須指明編碼方式。如果沒有知名,默認是沒有編碼方式的,通過QSettings::iniCodec() 返回的結(jié)果為null。

引用Qt的幫助文檔

QTextCodec *QSettings::iniCodec() const
Returns the codec that is used for accessing INI files. By default, no codec is used, so a null pointer is returned.

解決方案

增加一行代碼:

mSetting->setIniCodec(QTextCodec::codecForName("UTF-8"));

即修改后的代碼為:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    mSetting = new QSettings("vdacfg.ini", QSettings::IniFormat);
}

void MainWindow::writeConfig()
{
    mSetting->setIniCodec(QTextCodec::codecForName("UTF-8"));
    
    mSetting->setValue("student/name", "xiongfei");
    mSetting->setValue("student/age", "42");
    mSetting->setValue("student/sex", "男");

    mSetting->setValue("teacher/name", "劉春花");
    mSetting->setValue("teacher/age", "42");
    mSetting->setValue("teacher/major", "語文");
}

然后,打開vdacfg.ini文件則是正確的中文字符了,如下圖所示。

知識補充

除了上文的方法,小編還為大家整理了Qt讀寫ini文件時出現(xiàn)中文亂碼問題的解決方法,希望對大家有所幫助

關(guān)鍵:

 mSetting.setIniCodec(QTextCodec::codecForName("UTF-8"));
 
 QString::fromLocal8Bit("中文") 

(我用的VS2019+Qt5.6.3) 

測試代碼:

    QSettings mSetting("1.ini", QSettings::IniFormat);
    mSetting.setIniCodec(QTextCodec::codecForName("UTF-8"));
    mSetting.setValue("student/name", QString::fromLocal8Bit("xiongfei"));
    mSetting.setValue("student/age", QString::fromLocal8Bit("42"));
    mSetting.setValue("student/sex", QString::fromLocal8Bit("男"));
 
    mSetting.setValue("teacher/name", QString::fromLocal8Bit("劉春花"));
    mSetting.setValue("teacher/age", QString::fromLocal8Bit("42"));
    mSetting.setValue("teacher/major", QString::fromLocal8Bit("語文"));
 
    qDebug() << mSetting.value("teacher/major").toString();

可以解決中文亂碼問題?。?!

到此這篇關(guān)于Qt向ini文件寫入中文出現(xiàn)亂碼問題的解決方法詳解的文章就介紹到這了,更多相關(guān)Qt解決亂碼問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • OpenCV實現(xiàn)圖像切割功能

    OpenCV實現(xiàn)圖像切割功能

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)圖像切割功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C++中std::distance使用方法示例

    C++中std::distance使用方法示例

    std::distance?是 C++ 標準庫中的一個函數(shù),用于計算兩個迭代器之間的距離,本文主要介紹了C++中std::distance使用方法示例,具有一定的參考價值,感興趣的可以了解一下
    2025-04-04
  • C++結(jié)構(gòu)體用法實例分析

    C++結(jié)構(gòu)體用法實例分析

    這篇文章主要介紹了C++結(jié)構(gòu)體用法,實例分析了默認構(gòu)造函數(shù),復(fù)制構(gòu)造函數(shù),運算符重載等使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • 利用C語言編寫一個無限循環(huán)語句

    利用C語言編寫一個無限循環(huán)語句

    這篇文章主要介紹了利用C語言編寫一個無限循環(huán)語句問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 關(guān)于vector迭代器失效的幾種情況總結(jié)

    關(guān)于vector迭代器失效的幾種情況總結(jié)

    下面小編就為大家?guī)硪黄P(guān)于vector迭代器失效的幾種情況總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 純C語言:遞歸組合數(shù)源碼分享

    純C語言:遞歸組合數(shù)源碼分享

    這篇文章主要介紹了純C語言:遞歸組合數(shù)源碼,有需要的朋友可以參考一下
    2014-01-01
  • MFC模擬實現(xiàn)自定義消息發(fā)送

    MFC模擬實現(xiàn)自定義消息發(fā)送

    在MFC框架下,有很多系統(tǒng)已經(jīng)定義好的消息,例如ON_WM_LBUTTONDOWN()、ON_WM_MBUTTONDOWN()等等。本文將利用這些定義好的消息模擬實現(xiàn)一下消息發(fā)送,需要的可以參考一下
    2022-01-01
  • 獲取一個文件行數(shù)的方法

    獲取一個文件行數(shù)的方法

    獲取一個文件行數(shù)的方法,需要的朋友可以參考一下
    2013-03-03
  • Vc++ 控件List Control用法總結(jié)

    Vc++ 控件List Control用法總結(jié)

    這篇文章主要介紹了Vc++ 控件List Control用法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • C++自動生成迷宮游戲

    C++自動生成迷宮游戲

    這篇文章主要為大家詳細介紹了C++自動生成迷宮游戲,運用并查集自動生成迷宮地圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論