crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Какая внутренняя кодировка у Qt
Litkevich Yuriy
  опции профиля:
сообщение 28.1.2008, 19:46
Сообщение #1


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

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

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




Репутация:   94  


Не могу понять какая кодировка используется в Qt'ях.

Предположим UTF-8, тогда возьмем текстовый редактор работающий с UTF-8 пишем следующий код:
int main(int argc, char** argv)
{
    QApplication app(argc, argv);

    QLabel    lbl("Привет Мир!");

    lbl.show();
    return app.exec();
}

Должны ли мы видеть "ПриветМир"? как в рантайме все это работает если локальная кодировка не UTF-8? т.е. происходит ли какое-то конвертирование.

Сейчас, чтобы все путем отображалось, поступаю так:
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

    QLabel    lbl(QObject::tr("Привет Мир!"));

    lbl.show();

    return app.exec();
}

в редакторе UTF-8.

Хочу понять как все эти штуки, внутренности Qt и локальная кодировка, завязаны.

Может кто про это знает и может доходчиво объяснить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.1.2008, 20:14
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


В Qt используется Unicode.

Что именно тебя интересует интернационализация?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.1.2008, 22:08
Сообщение #3


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

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

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




Репутация:   94  


Цитата(ViGOur @ 28.1.2008, 23:14) *
В Qt используется Unicode.

1 Это понятие весьма растежимое, UTF-8, UTF-16LE, UTF-16BE, кто из них?
2 Мне хочется избежать писанины типа:
QObject::tr("Привет Мир!")

3 Я собираюсь попробывать сделать просмотрщик таблиц БД, невыйдет ли какой казус с кодировками, сейчас уменя есть БД с кодировкой CP-1251.
4 Когда работает прога в рантайме, исходники положим писались в UTF-8, как обстоят дела со всякими текстовыми виджетами (у которых родная кодировка какая-то из Unicod'овских), например, на виндовозе. Т.е. если всталять текст извне, или копировать его в другие программы из этой Qt'шной проги.

Мне интересно что там происходит, я замечал, редко, но в некоторых прогах скапирушь текст в Ворд, а там ересь. нехотелось бы такого, отсюда и вопрос. Уменя так с Борландовской прогой было, из Мемо в блокнот копируется ересь, а наоборот все нормально, это на Win2k.
А на WinXp все путем :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Багира
  опции профиля:
сообщение 28.1.2008, 22:12
Сообщение #4


Злоба_дня
***

Группа: Администратор
Сообщений: 314
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 2

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




Репутация:   4  


Тема разделена, так как проблемы разные...

Смотрите: создать запрос HTML-странички в URL-е которой имеются русские буквы
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.1.2008, 22:21
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


1. Unicode, но точно не UTF-8. Честно говоря я сам толком не знаю. :)
2. Можешь не писать, но нужно настроить кодек на отображение CP-1251.
3. Выйдет казус, но он легко решается настройкой кодека на отображение CP-1251.
4. Не пробовал ни разу, но было бы интересно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.1.2008, 22:26
Сообщение #6


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

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

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




Репутация:   94  


Дело в том что строку:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

Заменил на строку:
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));

соответственно писалось все в этой кодировке, вижу билебирду.

Хотя кодировка числится в списке кодировок:
...
Windows-1250 to 1258
...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.1.2008, 22:33
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


QTextCodec * QTextCodec::codecForCStrings () [static]

???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.1.2008, 22:37
Сообщение #8


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

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

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




Репутация:   94  


Помоему, как столкнулся с програмированием, у меня никогда так голова не пухла, даже когда на Turbo Pascal'е ООП изучал :huh:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 28.1.2008, 22:40
Сообщение #9


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Цитата(Litkevich Yuriy @ 28.1.2008, 22:37) *
Помоему, как столкнулся с програмированием, у меня никогда так голова не пухла, даже когда на Turbo Pascal'е ООП изучал
Нууу, ты тоже нашел, что в пример ставить! :)
Дальше еще начнуться ломки, когда нет пищи для мозга... ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Flex Ferrum
  опции профиля:
сообщение 6.2.2008, 2:22
Сообщение #10


Студент
*

Группа: Новичок
Сообщений: 16
Регистрация: 26.11.2007
Пользователь №: 26

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 28.1.2008, 19:46) *
Не могу понять какая кодировка используется в Qt'ях.

Предположим UTF-8, тогда возьмем текстовый редактор работающий с UTF-8 пишем следующий код:

А платформа какая? Если очень хочется использовать строки на русском в исходном тексте для Qt 4.3.2 и выше, то нужно пользоваться методом QString QString::fromLocal8Bit. Он делает Qt-строчку из строкового литерала в локальной кодировке.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 13.4.2024, 11:53