Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/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:
    [SerialNumbers]
    AliasList="TSD,YBS,İAS"

    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