QSettings set("config.ini", QSettings::IniFormat);
set.setIniCodec("GB2312");
set.setValue("TEST/val", "你好");
QSettings set1("config.ini", QSettings::IniFormat);
set1.setIniCodec("GB2312");
qDebug() << set1.value("CONFIG/name").toString();
配置文件ANSI编码,内容如下:
[TEST]
val=你好
[CONFIG]
name=世界
看似没问题的代码,输出结果
"êà??"
由于setValue并不会立即写,所以这个时候再去读,必然中文乱码。怎么解决呢?加一行sync就解决了。
QSettings set("config.ini", QSettings::IniFormat);
set.setIniCodec("GB2312");
set.setValue("TEST/val", "你好");
set.sync(); //<------读之前写入即可
QSettings set1("config.ini", QSettings::IniFormat);
set1.setIniCodec("GB2312");
qDebug() << set1.value("CONFIG/name").toString();
尽量还是一次性操作配置文件比较好,不建议这种刚打开写又打开读的蜜汁操作