Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct


    Qt World Summit: Early-Bird Tickets

    [SOLVED] QSettings Codec Problem

    General and Desktop
    4
    7
    7158
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Y
      yaseminyilmaz 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.

      1 Reply Last reply Reply Quote 0
      • G
        Galactik 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.

        1 Reply Last reply Reply Quote 0
        • Y
          yaseminyilmaz 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

          1 Reply Last reply Reply Quote 1
          • G
            Galactik last edited by

            After saving the ini file as a UTF-8 file, you should then modify your setIniCodec to setIniCodec("UTF-8");

            1 Reply Last reply Reply Quote 1
            • Y
              yaseminyilmaz last edited by

              Thanks Galactik.

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

              1 Reply Last reply Reply Quote 1
              • S
                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?

                1 Reply Last reply Reply Quote 0
                • T
                  texpert last edited by

                  QSettings::setIniCodec

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

                  Sincerely yours, amigos!

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post