Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-115849

QSettings in Qt 5.15 works for values of some special characters. Should it work like that?

    XMLWordPrintable

Details

    • Windows

    Description

      Sample program and test_in.ini for reading are attached. test_out is not provided since it will be generated automatically.

      It is all about a string that contains certain special characters: "𠂇𠂉𠃌𡗗𢦏𤇾P1". Other than the 'P1' at the end, all characters are located at extended blocks of Unicode with 5-digit codepoint, i.e. U+200XX. I think the codepoint is the problem.

      Please find the attached sample program. Change the paths given to settingsIn, settingsOut and settingsRead to wherever test_in.ini or test_out.ini is stored. Run the sample with the following configurations, one can find:
      1. Comment out both macro UTF8 and READ_ENABLED so that no UTF-8 is assumed, and test_out is not read again after being written. It can be found that special characters are stored as \x sequence.
      2. Uncomment READ_ENABLED to read test_out. Special characters are still stored as \x sequence but can be correctly read. Although qDebug cannot correctly print those characters, the string written into test_out is confirmed to be the same as original string in test_in because '==' test returns 'true'. So OK, even though special characters cannot be saved as they are, they can be read and used properly.
      3. Uncomment UTF8 but comment out READ_ENABLE again. This time, only 'P1' is stored in test_out. It can also be confirmed from property, that the size of test_out is smaller than test_in. So this time, those special characters cannot be even saved.
      4. Uncomment READ_ENABLED again to read test_out. Magically, \x sequence appears in test_out and can be read properly.

      So QSettings magically works even if nothing is visible (or even existing?) in actual .ini file. How is that possible? And as mentioned, I think it is only related to certain very special characters. Common non-Latin characters works fine., i.e. being visible (in form of characters rather than \x sequence), readable and writable.

      Those special characters work as expected in Qt6 though.

      Attachments

        1. Sample.zip
          2 kB
        2. test_in.ini
          0.0 kB
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            thiago Thiago Macieira
            luqiaochen Luqiao Chen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes