crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Проблемы с отображением кирилицы
tp4
  опции профиля:
сообщение 10.8.2011, 16:37
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 1.10.2009
Пользователь №: 1128

Спасибо сказали: 1 раз(а)




Репутация:   0  


Здравствуйте, господа.

Недавно возился с компиляцией QIBASE для работы с firebird в Ubuntu. Тут описаны некоторые сложности, которые у меня возникли: http://www.forum.crossplatform.ru/index.php?showtopic=7343. Вытоге все эти манипуляции привели к тому, что у меня в системе установлены 2 версии Qt: qt4.7.0 из бинарников и qt4.7.3 из исходников.
Проблема: при компиляции моей проги с версией 4.7.3 у меня не отображаются корректно кириллические надписи на интерфейсе. Но при компиляции с 4.7.0 все корректно отображается. Чудеса!
Чтобы разобраться в проблеме, создал небольшой пример:

QTextCodec *codec = QTextCodec::codecForName("UTF-8")
QTextCodec::setCodecForCString(codec);

QLabel lbl("Пумпурум");
lbl.show()


В итоге при компиляции с версией 4.7.0 виджет с надписью появляется и корректно отображает кирилицу. При компиляции с 4.7.3 виджет не появляется вовсе! При изменении русской надписи на английскую в обоих случаях все работает.

Помогите пожалуйста разобраться в вопросе. Спасибо.

Qt4.7.3, Qt4.7.0, Ubuntu 10.10, исходники в UTF-8.

Да, кстати, если сделать в 4.7.3 так
QLabel lbl("ASDПумпурум");

то лэйбл все-таки появляется, тогда надпись представляет из себя "ASD"+кракозябра
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sidsukana
  опции профиля:
сообщение 10.8.2011, 19:43
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 158
Регистрация: 23.12.2010
Из: Челябинск
Пользователь №: 2296

Спасибо сказали: 10 раз(а)




Репутация:   2  


я всегда так выводил абсолютно любой язык

QString::fromUtf8(тут переменная ваша);


т.е в вашем случае должно быть

QLabel lbl(QString::fromUtf8("ASDПумпурум"));


Сообщение отредактировал sidsukana - 10.8.2011, 19:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tp4
  опции профиля:
сообщение 11.8.2011, 10:36
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 1.10.2009
Пользователь №: 1128

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(sidsukana @ 10.8.2011, 20:43) *
я всегда так выводил абсолютно любой язык

QString::fromUtf8(тут переменная ваша);


т.е в вашем случае должно быть

QLabel lbl(QString::fromUtf8("ASDПумпурум"));


К сожалению, не помогло.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tp4
  опции профиля:
сообщение 11.8.2011, 11:35
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 1.10.2009
Пользователь №: 1128

Спасибо сказали: 1 раз(а)




Репутация:   0  


Более того! Даже Qt-шные дефолтные программы типа qtconfig, linguist отображают кракозябры вместо кириллицы. Как так могло получиться?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 11.8.2011, 12:57
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


так а сами файлы исходников то в какой кодировке ? Делай всё в UTF8

тогда и
QString::fromUtf8("русский текст");

нормально будет выводится
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tp4
  опции профиля:
сообщение 11.8.2011, 13:08
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 1.10.2009
Пользователь №: 1128

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 11.8.2011, 13:57) *
так а сами файлы исходников то в какой кодировке ? Делай всё в UTF8

тогда и
QString::fromUtf8("русский текст");

нормально будет выводится

Исходники в UTF-8.
Еще раз повторю, что обнаружены также проблемы с отображением кириллицы у стандартных утилит Qt: designer, linguist, qtconfig и т.д. То есть дело не в моих исходниках. Как-то криво собралась библиотека.
Не очень понимаю, как такое могло произойти.
Собирал стандартно:
./configure
qmake
make

Конфигурировал без параметров, т.к. торопился. Может там по умолчанию стоит флаг -no-fucking-cyrillic. Не понятно...

На sql.ru тут подсказывают, что, т.к. кодеки реализованы в виде плагинов, то может быть дело в том, что во время выполнения подгружаются плагины от другой версии Qt. Сейчас проверяю эту гипотезу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 12.8.2011, 18:07
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(tp4 @ 11.8.2011, 16:08) *
что во время выполнения подгружаются плагины от другой версии Qt
такого не может быть. В плагинах зашита их версия. мало того кодеки в виде плагинов реализованы только для Иероглифических языков.
Для Линя нужно ещё ldd запускать и пути настраивать, может в этом дело.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tp4
  опции профиля:
сообщение 12.8.2011, 19:00
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 32
Регистрация: 1.10.2009
Пользователь №: 1128

Спасибо сказали: 1 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 12.8.2011, 19:07) *
Цитата(tp4 @ 11.8.2011, 16:08) *
что во время выполнения подгружаются плагины от другой версии Qt
такого не может быть. В плагинах зашита их версия. мало того кодеки в виде плагинов реализованы только для Иероглифических языков.
Для Линя нужно ещё ldd запускать и пути настраивать, может в этом дело.


Вы случаем не знаете, почему в ldd выводе приложения отсутствуют библиотеки плагинов, присутствуют только libQtCore, libQtGui и т.п.? Причем факт, что программа работает с firebird.



Сообщение отредактировал tp4 - 12.8.2011, 19:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.8.2011, 8:15
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


tp4, потому-что плагины - вещь необязательная, если они есть, то загрузятся, если нет - не загрузятся. А без QtCore и т.п. программа не запустится.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 13:57