[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

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.