Important: Please read the Qt Code of Conduct -

[SOLVED] QSettings Codec Problem

  • 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:

    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);
    mSettings.setIniCodec("ISO 8859-9");
    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");

  • Thanks Galactik.

    The problem has been solved by using QTextCodec::setCodecForCStrings.

  • I meet the similar issue, but i have chinese in ini file.
    QT5 already remove QTextCodec::setCodecForCStrings.
    Do you have some resolution?

  • QSettings::setIniCodec

    The codec must be set immediately after creating the QSettings object, before accessing any data.

Log in to reply