Russian Qt Forum
Сентябрь 30, 2024, 02:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: И снова про кодировки...  (Прочитано 8852 раз)
Bepec
Гость
« Ответ #15 : Октябрь 14, 2015, 20:21 »

QColor будет примерно как

QRGB(00,ff,ff)

Меняем кодировку и получаем
џ|nу(00,ff,ff)

Парсер QVariant охреневает Веселый
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #16 : Октябрь 14, 2015, 23:21 »

Да черт с ними, с цветами...

В приложении Linux глухо не работает UTF-8 при загрузке настроек. В QString загружаются байты, без декодирования. В приложении Windows глухо работает как надо. Исходники идентичны. Разница в ОС, и в разрядности ОС - Windows 32 бит, Linux 64 бит. Сборка Qt и сборка самого приложения в Linux тоже 64 бит.

Но тестовый пример работает. Уже два бубна протёр в поисках что может влиять... Даже выносил setIniCodec() из конструктора на после создания объекта - не помогает.  Грустный Может в Qt 64 есть какая-то дыра?
...
Вроде кое-как добился загрузки в QString из UTF-8 в Linux. Но toLocal8Bit всё равно почему-то не работает без явной установки кодировки с помощью setCodecForLocale().
« Последнее редактирование: Октябрь 15, 2015, 00:40 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #17 : Октябрь 15, 2015, 01:23 »

Наличие/отсутствие byte order mark (BOM) рассматривалось?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #18 : Октябрь 15, 2015, 02:32 »

Нет. А толку? Это же всё инкапсулировано в QSettings. Хотя я могу точно сказать, что bom там не записывается.
« Последнее редактирование: Октябрь 15, 2015, 02:45 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Bepec
Гость
« Ответ #19 : Октябрь 15, 2015, 04:11 »

приводите версию и ветку линуха, мб и поможем.

PS зачем вам toLocal8Bit? при использовании utf8 он нафиг не нужен )
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #20 : Октябрь 15, 2015, 13:19 »

приводите версию и ветку линуха, мб и поможем.

PS зачем вам toLocal8Bit? при использовании utf8 он нафиг не нужен )

Linux Kubuntu 14.04. Я сам думаю, что с системой что-то не так. В Linux строки из QString, которые были загружены QSettings в UTF-8, читаются только после... установки кодировки локали Windows.

На самом деле, это не смертельно - локаль пользователю всё равно придётся выбирать, потому что она нужна для загрузки в QPlainText 8-и битных текстов данных, там в UTF-8 перейти пока нельзя. Значит я могу перед преобразованием менять локаль, затем возвращать System. Но такой поведение выглядит странно... Кроме как при загрузке в QPlainText и setCodecForTr(), "Windows-1251" нигде в приложении не используется.

Зачем toLocal8Bit я раньше писал - нужны const char* варианты строк для работы со старыми С-библиотеками. Вот тут в Linux и лезут косяки с кодировками. В Windows нет проблем.
« Последнее редактирование: Октябрь 15, 2015, 13:30 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #21 : Октябрь 19, 2015, 18:26 »

Локальная проблема была найдена - при сборке плагинов не выполнялись действия в QMAKE_POST_LINK из-за того, что там остались двойные кавычки в групповом имени файлов для удаления. То есть, в Linux сборке было

Код:
QMAKE_POST_LINK = $$QMAKE_DEL_FILE \"$$DESTDIR/$${TMPFILE}*\"
вместо
Код:
QMAKE_POST_LINK = $$QMAKE_DEL_FILE $$DESTDIR/$${TMPFILE}*

Соответственно старые файлы не удалялись, новые поэтому не создавались, и всё ехало... И причем ведь, qmake честно генерит команду

rm -f ....

В результате всё проскакивает молча, шито-крыто, а потом очень странно не работает.
Но глобально проблема не решена - пришлось делать вызовы для принудительной установки кодировки, в которой были сохранены настройки, и для возврата System после toLocal8Bit. Поэтому тэг РЕШЕНО в заголовок не добавляю.
« Последнее редактирование: Октябрь 19, 2015, 18:28 от Гурман » Записан

2^7-1 == 127, задумайтесь...
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.133 секунд. Запросов: 23.