linux QT setting ini读取中文编码问题

软件和网站开发以及相关技术探讨
回复
kuekuatsheu
帖子: 14
注册时间: 2014-07-24 8:33
系统: ubuntu windows

linux QT setting ini读取中文编码问题

#1

帖子 kuekuatsheu » 2014-11-26 12:11

settings section 和 key 是中文无法提取value section和key是英文的可以提取value(中文也支持)
当标签section和key 是中文的时候就无法提取 value 的值,
qDebug()<<"into the test method!";
QString lstrTem, lstrTem_1;
lstrTem = ReadIni("/root/test/SysConfig_test.ini","System","DZQZJIP").trimmed();
qDebug()<<lstrTem;
//这一部分可以取到DZQZJIP(values值是中文)
QString name_1 ="银联卡读卡器";
QString name_2 ="创自";
lstrTem_1 = ReadIni("/root/test/SysConfig_test.ini",name_1,name_2).trimmed();
qDebug()<<"chuangzi";
qDebug()<<lstrTem_1;
qDebug()<<"out of the test method!";
//这一部分无法提取到values的值
在main函数内已经设置了编码:
QTextCodec::setCodecForLocale(codec_g); //路径名支持中文
QTextCodec::setCodecForTr(codec_g); //QString支持中文
QTextCodec::setCodecForCStrings(codec_g); //string支持中文
settings也已经设置了编码:
QSettings *configIniRead = new QSettings(iFileName, QSettings::IniFormat);
configIniRead->setIniCodec(codec_g);

求解决办法,麻烦大家了
头像
astolia
论坛版主
帖子: 6447
注册时间: 2008-09-18 13:11

Re: linux QT setting ini读取中文编码问题

#2

帖子 astolia » 2014-11-26 21:46

从你的代码风格来看,最大的可能性是你.cpp的文件编码和ini文件编码不一致
gcc默认用的是utf8编码,所以源文件和ini最好也用utf8。中文字符串转成QString用 QString::fromUtf8("中文")
kuekuatsheu
帖子: 14
注册时间: 2014-07-24 8:33
系统: ubuntu windows

Re: linux QT setting ini读取中文编码问题

#3

帖子 kuekuatsheu » 2014-11-28 8:48

astolia 写了:从你的代码风格来看,最大的可能性是你.cpp的文件编码和ini文件编码不一致
gcc默认用的是utf8编码,所以源文件和ini最好也用utf8。中文字符串转成QString用 QString::fromUtf8("中文")
谢谢了,也是编码的是,提取标签的时候用了tr("中文")就ok了,linux新手各种知识学习,编码很晕
回复