最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

現(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都變成了十六進(jìn)制串。并且剛好這些十六進(jìn)制串就是對(duì)應(yīng)中文的UTF-8編碼結(jié)果。

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

原因分析

當(dāng)通過QSettings類寫入ini文件時(shí),必須指明編碼方式。如果沒有知名,默認(rèn)是沒有編碼方式的,通過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文件則是正確的中文字符了,如下圖所示。

知識(shí)補(bǔ)充

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

關(guān)鍵:

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

(我用的VS2019+Qt5.6.3) 

測(cè)試代碼:

    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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中使用正則匹配問題

    C++中使用正則匹配問題

    這篇文章主要介紹了C++中使用正則匹配問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語言中的for循環(huán)語句基本語法及使用

    C語言中的for循環(huán)語句基本語法及使用

    這篇文章主要介紹了C語言中的for循環(huán)語句基本語法及使用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • C語言?typedef的用法示例詳解

    C語言?typedef的用法示例詳解

    typedef是在C和C++編程語言中的一個(gè)關(guān)鍵字,作用是為現(xiàn)有的數(shù)據(jù)類型(int、float、char……)創(chuàng)建一個(gè)新的名字,目的是為了使代碼方便閱讀和理解,這篇文章主要介紹了C語言typedef的使用,需要的朋友可以參考下
    2023-06-06
  • 利用C語言實(shí)現(xiàn)經(jīng)典游戲斗獸棋

    利用C語言實(shí)現(xiàn)經(jīng)典游戲斗獸棋

    《斗獸棋》是一款棋類游戲,整個(gè)游戲畫面是分為兩塊區(qū)域,中間有河流分割兩塊區(qū)域,有橋梁可以讓彼此的動(dòng)物過河,要取得勝利,必須占領(lǐng)那一邊動(dòng)物的巢穴獲勝利。本文將用C語言實(shí)現(xiàn)這一游戲,需要的可以參考一下
    2022-03-03
  • C++判斷主機(jī)是否處于聯(lián)網(wǎng)狀態(tài)

    C++判斷主機(jī)是否處于聯(lián)網(wǎng)狀態(tài)

    這篇文章主要為大家詳細(xì)介紹了C++判斷主機(jī)是否處于聯(lián)網(wǎng)狀態(tài),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • C語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實(shí)現(xiàn)方法

    C語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄狢語言從txt文件中逐行讀入數(shù)據(jù)存到數(shù)組中的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • 淺談內(nèi)聯(lián)函數(shù)與宏定義的區(qū)別詳解

    淺談內(nèi)聯(lián)函數(shù)與宏定義的區(qū)別詳解

    本篇文章是對(duì)內(nèi)聯(lián)函數(shù)與宏定義的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言中的盜賊(小偷)問題詳解

    C語言中的盜賊(小偷)問題詳解

    大家好,本篇文章主要講的是C語言中的盜賊(小偷)問題詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • 使用代碼驗(yàn)證linux子進(jìn)程與父進(jìn)程的關(guān)系

    使用代碼驗(yàn)證linux子進(jìn)程與父進(jìn)程的關(guān)系

    Linux下父進(jìn)程可以使用fork 函數(shù)創(chuàng)建子進(jìn)程,但是當(dāng)父進(jìn)程先退出后,子進(jìn)程會(huì)不會(huì)也退出呢?通過下面這個(gè)小實(shí)驗(yàn),我們能夠很好的看出來
    2014-02-02
  • opencv3/C++ 離散余弦變換DCT方式

    opencv3/C++ 離散余弦變換DCT方式

    今天小編就為大家分享一篇opencv3/C++ 離散余弦變換DCT方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評(píng)論

沐川县| 阳山县| 永德县| 河南省| 沅陵县| 夏河县| 龙井市| 晴隆县| 兴城市| 宿松县| 普定县| 遂溪县| 宁明县| 右玉县| 九台市| 东海县| 长治县| 额尔古纳市| 黔江区| 罗甸县| 唐河县| 宝兴县| 丘北县| 西峡县| 阿鲁科尔沁旗| 青川县| 卓资县| 通渭县| 垦利县| 穆棱市| 永平县| 汤原县| 隆昌县| 广水市| 深水埗区| 汾阳市| 金昌市| 宁强县| 梨树县| 德兴市| 林甸县|