• 13459阅读
  • 7回复

QSettings访问ini配置文件 中文乱码 [复制链接]

上一主题 下一主题
离线anranzhifeng
 

只看楼主 倒序阅读 楼主  发表于: 2015-06-08
QSettings访问ini配置文件中文出现乱码

以下我试过的几种方法,仍未解决:
1.
configini=new QSettings(filename,QSettings::IniFormat);
configini->setIniCodec("UTF-8");//或者GB2312

2.
configini->setIniCodec(QTextCodec::codecForName("UTF-8")); //或者GB2312

大家帮帮忙~ 谢谢!
离线dbzhang800

只看该作者 1楼 发表于: 2015-06-08
请描述乱码的具体现象,并给出最小测试代码 + Qt版本。
离线孙大蛇

只看该作者 2楼 发表于: 2015-06-08
QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));你试一下
离线anranzhifeng

只看该作者 3楼 发表于: 2015-06-08
回 dbzhang800 的帖子
dbzhang800:请描述乱码的具体现象,并给出最小测试代码 + Qt版本。 (2015-06-08 10:40) 

Qt4.8.5 arm9上使用
//myini.ini
//[VALUE]
//name=卢晶

获得的name是乱码

QString RWini::ReadIni(QString groupname){
   QString filename = "/home/myini.ini";
    QSettings configini=new QSettings(filename,QSettings::IniFormat);
    configini->setIniCodec("UTF-8");

    configini->beginGroup(groupname);
    QString sName;
    if(groupname=="VALUE"){
        sName=configini->value("name").toString();

    }
    configini->endGroup();
    return sName;
}
离线anranzhifeng

只看该作者 4楼 发表于: 2015-06-08
回 孙大蛇 的帖子
孙大蛇:QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));你试一下 (2015-06-08 13:37) 

谢谢你的回复,但还是不行
离线dbzhang800

只看该作者 5楼 发表于: 2015-06-08
回 anranzhifeng 的帖子
anranzhifeng:Qt4.8.5 arm9上使用
//myini.ini
//[VALUE]
//name=卢晶
....... (2015-06-08 13:49) 

你这不是完整的测试代码,所以不好确定哪儿出现问题。

1. 你 的 myini.ini 文件是 utf8 编码吗?
2. 你这个 myini.ini 只在这一个地方使用么?在 setIniCodec() 之前,有没有其他地方使用过??
离线anranzhifeng

只看该作者 6楼 发表于: 2015-06-08
回 dbzhang800 的帖子
dbzhang800:你这不是完整的测试代码,所以不好确定哪儿出现问题。
1. 你 的 myini.ini 文件是 utf8 编码吗?
2. 你这个 myini.ini 只在这一个地方使用么?在 setIniCodec() 之前,有没有其他地方使用过?? (2015-06-08 15:23) 

谢谢版主!
完整的代码太长了,所以只是截取了其中一部分。
我把myini.ini从arm拷到主机上,vim看是utf8的(中文也可以正常显示)

myini.ini 在其他地方也有使用

我把有用到myini.ini前都设置成setIniCodec("UTF8");就可以了

谢谢版主!

离线gonboy

只看该作者 7楼 发表于: 2015-06-08

1 - 首先确认你的ini文件内码。 是 UTF8, UT8+BOM ,还是其它
2 - 在根据需要设计 setIniCodec/

ini文件,尽量用英文和数字。不要用其它的。
快速回复
限100 字节
 
上一个 下一个