[SOLVED] QSettings Codec Problem
-
wrote on 29 Nov 2012, 07:55 last edited by
Hi all,
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);
mSettings.setIniCodec("ISO 8859-9");
QStringList mAliases = mSettings.value("SerialNumbers/AliasList").toString().split(",");
@The content of Ini file:
[SerialNumbers]
AliasList="TSD,YBS,İAS"The values of mAliases: TSD, YBS, \460AS
Thanks a lot for your helps and clarification.
-
wrote on 29 Nov 2012, 08:42 last edited by
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.
-
wrote on 29 Nov 2012, 12:06 last edited by
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);
mSettings.setIniCodec("ISO 8859-9");
QByteArray mList = mSettings.value("SerialNumbers/AliasList").toByteArray();
QString string = QString::fromUtf8(mList);
@Thanks advance for your helps
-
wrote on 29 Nov 2012, 14:25 last edited by
After saving the ini file as a UTF-8 file, you should then modify your setIniCodec to setIniCodec("UTF-8");
-
wrote on 29 Nov 2012, 14:58 last edited by
Thanks Galactik.
The problem has been solved by using QTextCodec::setCodecForCStrings.
-
wrote on 20 May 2014, 07:04 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? -
wrote on 30 May 2014, 07:57 last edited by
QSettings::setIniCodec
The codec must be set immediately after creating the QSettings object, before accessing any data.