![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
kin63camapa |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 32 Регистрация: 21.8.2010 Пользователь №: 1976 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Столкнулся со странным поведением QSettings на юникоде, если файл в ascii все ok, cp1251 не детектит, но какбэ и не обязан. Но вот если файл в юникоде парсер делает вид что в файле пусто allKeys().size==0. Сначала думал что он bom не распознаёт, сделал костыль
Раскрывающийся текст
Костыль дал нормальную работу только на utf-8 на UTF-16LE и UTF-16BE QSettings говорит что нет никаких значений у тя в файле, иди лесом. Думаю дай хоть гляну что ему нужно на вход подсовывать:
На выхлопе:
Но и это ещё не все, в созданном файле вообще черт пойми какая кодировка притом без BOM
Собственно вопрос чо делать та? зы и если кто знает как заставить QSettings работать с UTF-7, UTF-8-EBCDIC и SCSU поделитесь, о-о-о-очень надо Сообщение отредактировал kin63camapa - 9.12.2014, 18:58 |
|
|
![]() |
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Если посмотреть в исходники, то видно что кодек используется только для кодировки значений ключей
Сами ключи кодируются вот так: Раскрывающийся текст
Так что никак. UTF-8 работает постольку-поскольку его кодировка совпадает с ASCII. Вообще: Цитата Following the philosophy that we should be liberal in what we accept and conservative in what we generate, QSettings will accept Latin-1 encoded INI files, but generate pure ASCII files, where non-ASCII values are encoded using standard INI escape sequences. To make the INI files more readable (but potentially less compatible), call setIniCodec(). Самый близкий workaround:
Цитата Всё что нужно было сделать это конструктор: QSettings ( const QIODevice & iodevice, QObject * parent = 0 ) вместо QSettings ( const QString & fileName, Format format, QObject * parent = 0 ) А как тогда в реестр сохранять? И вообще AppData и т.п. разруливать? QSettings мне как раз нравится тем, что можно завести его и не париться. Но для общего инструмента чтения INI файлов он конечно не очень. Сообщение отредактировал lanz - 9.12.2014, 20:31 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 29.4.2025, 12:28 |