[SOLVED] QSettings Codec Problem
I try to read the values from an ini file using by QSettings. That file includes Turkish characters (İ, ç, ğ, etc). I can't solve this problem although I've used setIniCodec. What can the problem be?
@ QSettings mSettings("params.ini", QSettings::IniFormat);
QStringList mAliases = mSettings.value("SerialNumbers/AliasList").toString().split(",");
The content of Ini file:
The values of mAliases: TSD, YBS, \460AS
Thanks a lot for your helps and clarification.
I'm not sure of that but i believe the ini file stores the string as UTF8, so you might want to try replace toString() with a toByteArray(), and then use QString::fromUtf8() to construct your string.
Thanks Galactik. I've tried your advice as the following below. The result string has been "TSD, YBS, ?AS".
I've noticed that ini file encoded by ANSI using by notepad++. I've converted to UTF-8 but the result string is empty after the encoding modification. How can I solve this problem?
QSettings mSettings("params.ini", QSettings::IniFormat);
QByteArray mList = mSettings.value("SerialNumbers/AliasList").toByteArray();
QString string = QString::fromUtf8(mList);
Thanks advance for your helps
After saving the ini file as a UTF-8 file, you should then modify your setIniCodec to setIniCodec("UTF-8");
The problem has been solved by using QTextCodec::setCodecForCStrings.
songzhao831 last edited by
I meet the similar issue, but i have chinese in ini file.
QT5 already remove QTextCodec::setCodecForCStrings.
Do you have some resolution?
The codec must be set immediately after creating the QSettings object, before accessing any data.