Доброго времени суток. Есть файл в кодировке Windows-1251 следующего содержания:
[bar]
hello=world
[бар]
hello=world
Пытаюсь его прочесть:
QSettings s("/home/vanya/winfolder/foo.txt", QSettings::IniFormat);
QTextCodec* c = QTextCodec::codecForName("CP1251");
s.setIniCodec(c);
qDebug() << s.childGroups();
Получаю ("bar", "áàð")
. Если закомментировать строку с указанием кодировки, то вывод тот же. В документации к setIniCodec сказано:
The codec is used for decoding any data that is read from the INI file ... By default, no codec is used, and non-ASCII characters are encoded using standard INI escape sequences.
Чему вообще не соответствует поведение моего кода. Вопрос: как правильно получить значения на русском языке?
Если foo.txt открыть в кодировке latin1, то там будут те же áàð. Тогда для чего я использую функцию setIniCodec? В моем понимании она как раз используется, чтобы правильно конвертировать текст из файла в utf-16. Тогда в чем проблема?