Russian Qt Forum
Ноябрь 11, 2024, 03:47
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Интернационализация, локализация
>
Unicode в drawText
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Unicode в drawText (Прочитано 20105 раз)
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Unicode в drawText
«
Ответ #15 :
Ноябрь 22, 2007, 21:49 »
Цитата: IGHOR от Ноябрь 22, 2007, 21:28
Это не работает.. всеравно каракули.
Полный код в студию. У меня работает все прекрасно!
BWT: какая ось?
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
IGHOR
Крякер
Offline
Сообщений: 390
Re: Unicode в drawText
«
Ответ #16 :
Ноябрь 22, 2007, 21:53 »
Цитата: pastor от Ноябрь 22, 2007, 21:49
Цитата: IGHOR от Ноябрь 22, 2007, 21:28
Это не работает.. всеравно каракули.
Полный код в студию. У меня работает все прекрасно!
BWT: какая ось?
Ось линух, код на другом компе, на данный момент передать его нечем.
Я написал это QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
в срр класа главного окна, в каком и рисую текст.
Может в другом месте нужно писать ?
Записан
Вячеслав
Гость
Re: Unicode в drawText
«
Ответ #17 :
Ноябрь 22, 2007, 21:57 »
Цитата: IGHOR от Ноябрь 22, 2007, 21:17
когда делаю tr("русский текст") всеравно кодировка кривая..
Меня вариант
QString str;
QTextCodec::codecForLocale()->toUnicode(str);
Полностью устраивает..
так и должно быть (про кодировку) tr подставляет строку из внешнего qm файла
Тебе-же показали
QTrnaslator *trans=new QTranslator;
trans->load("my_app_ru.qm");
qApp->installTranslator(trans);
QString ru=tr("en");
Ы ? и посмотреть на lupdate/lrelease/linguist'а
и IMHO динамический codecForLocale() неверен - исходник-то в одной кодировке .... А если локаль будет другая ? Вариант xep'а лучшее
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2901
Re: Unicode в drawText
«
Ответ #18 :
Ноябрь 22, 2007, 21:58 »
Цитата: IGHOR от Ноябрь 22, 2007, 21:53
Ось линух, код на другом компе, на данный момент передать его нечем.
Я написал это QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
в срр класа главного окна, в каком и рисую текст.
Может в другом месте нужно писать ?
Попробуй написать QTextCodec::codecForName("utf8"); вместо QTextCodec::codecForName("Windows-1251") - это я указал например
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Вячеслав
Гость
Re: Unicode в drawText
«
Ответ #19 :
Ноябрь 22, 2007, 21:58 »
Цитата: IGHOR от Ноябрь 22, 2007, 21:53
Цитата: pastor от Ноябрь 22, 2007, 21:49
Цитата: IGHOR от Ноябрь 22, 2007, 21:28
Это не работает.. всеравно каракули.
Полный код в студию. У меня работает все прекрасно!
BWT: какая ось?
Ось линух, код на другом компе, на данный момент передать его нечем.
Я написал это QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
в срр класа главного окна, в каком и рисую текст.
Может в другом месте нужно писать ?
А ты уверен что у тебя в линуксе 1251 ?! Там обычно Utf8 или KOI8-r ....
Записан
IGHOR
Крякер
Offline
Сообщений: 390
Re: Unicode в drawText
«
Ответ #20 :
Ноябрь 22, 2007, 22:06 »
Цитата: pastor от Ноябрь 22, 2007, 21:58
Цитата: IGHOR от Ноябрь 22, 2007, 21:53
Ось линух, код на другом компе, на данный момент передать его нечем.
Я написал это QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
в срр класа главного окна, в каком и рисую текст.
Может в другом месте нужно писать ?
Попробуй написать QTextCodec::codecForName("utf8"); вместо QTextCodec::codecForName("Windows-1251") - это я указал например
Да, так QTextCodec::codecForName("utf8") работает, Спасибо, так действительно удобнее
Записан
Swappp
Гость
Re: Unicode в drawText
«
Ответ #21 :
Ноябрь 22, 2007, 22:13 »
Цитата: xep от Ноябрь 22, 2007, 21:10
когда у тебя несколько программистов, у каждого своя любимая среда разработки/ос и т.д., охреительное занятие потом искать какой сырец был сохранён в цп1251
Ну это можно и нужно решать административными методами
тем более сейчас любая современная среда и редактор поддерживают UTF-8. А комментарии все наверно тоже исключительно на английском пишут?
Цитировать
и сырцы весят вдвое больше...
Правда? В UTF-8 все символы <=127 кодируются одним байтом. В два раза больше исходники будут весить в случае, если они полностью написаны на русском, без использования знаков препинания, цифр, пробелов и т.п.
либо если используется много символов с кодом >2047, но это уже не кириллица.
Цитировать
и кому это вообще надо - следить за кодирровкой в сорцах?
Следить не надо, ведь есть внутренние соглашения, по стилю кодинга и т.п. (или каждый лепит код кто во что горазд? а потом, в случае ухода кого то из команды, при необходимости внести изменения в написаный им код, его переписывают с нуля?), так вот это всего лишь еще один пункт в нем.
Цитировать
а когда _в принципе_ нужен только один язык, всё-равно надо пользоваться тр() - вот!
Зачем?
p.s. сам всегда пишу с tr()
«
Последнее редактирование: Ноябрь 22, 2007, 22:15 от Swappp
»
Записан
Alex03
Гость
Re: Unicode в drawText
«
Ответ #22 :
Ноябрь 23, 2007, 07:36 »
Swappp
+1
Всем кто чтото не понимает в кодировках в Qt читать документик QTDIR/doc/html/i18n.html
Записан
IGHOR
Крякер
Offline
Сообщений: 390
Re: Unicode в drawText
«
Ответ #23 :
Ноябрь 24, 2007, 02:40 »
Всем Спасибо!
Записан
IGHOR
Крякер
Offline
Сообщений: 390
Re: Unicode в drawText
«
Ответ #24 :
Ноябрь 26, 2007, 07:21 »
Всем Опять Привет!
Теперь я читаю базу данных MYSQL
достаю оттуда масив QString"ов и ллю на форму в textDraw
и русские символы не отображаются.. одни знаки
??
И перепробовал базу сохранять в всех кодировках..
и QTextCodec настраивал, ничего не выходит
Как выправить такое ?
«
Последнее редактирование: Ноябрь 26, 2007, 07:23 от IGHOR
»
Записан
Вячеслав
Гость
Re: Unicode в drawText
«
Ответ #25 :
Ноябрь 26, 2007, 09:24 »
Цитата: IGHOR от Ноябрь 26, 2007, 07:21
Всем Опять Привет!
Теперь я читаю базу данных MYSQL
достаю оттуда масив QString"ов и ллю на форму в textDraw
и русские символы не отображаются.. одни знаки
??
И перепробовал базу сохранять в всех кодировках..
и QTextCodec настраивал, ничего не выходит
Как выправить такое ?
поиск рулит по форуму
http://prog.org.ru/forum/index.php/topic,4344.0.html
Записан
IGHOR
Крякер
Offline
Сообщений: 390
Re: Unicode в drawText
«
Ответ #26 :
Ноябрь 27, 2007, 19:03 »
Всем СПАСИБО за помощь. Все разобрался.
Удачи Всем!!
Записан
Cyrax
Гость
Re: Unicode в drawText
«
Ответ #27 :
Декабрь 18, 2007, 18:04 »
Что-то не понятно совсем.
Все кодировки базы данных MySQL 5 настроены на cp1251 - кодировка БД по умолчанию, кодировки таблиц, полей. В базу данных заносится информация на русском языке, например, слово "Монитор".
Далее я в php-скрипте выполняю команды:
Цитировать
mysql_query ("set names 'cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
После чего получаю нормальный русский текст, который вывожу на web-страницу.
теперь то же самое делаю в Qt-программе с той же самой БД, с той же таблицей и записью:
Цитировать
QSqlQuery q1("set names 'cp1251'");
bool t = q1.exec(); // возвращает true
QSqlQuery q2("set collation_connection='cp1251_general_ci'");
t = q2.exec(); // возвращает true
QSqlQuery query("SELECT * FROM article");
t = query.exec(); // возвращает true
query.first();
QSqlRecord rec = query.record();
QString txt = rec.value("fullName").toString();
dep.setWindowTitle(txt);
В результате получаю в заголовке козяблики (но не вопросительные знаки). Все 3 запроса выполняются нормально (exec() возвращает true).
Предварительно устанавливаю:
Цитировать
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
Если в последней строке фрагмента кода txt перегнать в latin1:
Цитировать
dep.setWindowTitle(txt.toLatin1());
то получаю то, что нужно: "Монитор".
Если убрать установку кодеков в Windows-1251, то в случае с "dep.setWindowTitle(txt.toLatin1())" получаю те же козяблики, что с установкой кодеков, но без перегона в Latin1.
Если запросы, устанавливающие русскую кодировку для соединения, убрать, то в обоих случаях ("dep.setWindowTitle(txt);" и "dep.setWindowTitle(txt.toLatin1());" получаю 7 вопросительных знаков...
Вот получает объект QSqlQuery от сервера 7 байтов в кодировке cp1251. Далее через QVariant загоняю их в QString. При этом он "знает", что получил байты в cp1251, поскольку кодеки настроены на cp1251. Тем не менее, получаю что-то, что приходитося перегонять в Latin1 для того, чтобы получить cp1251...
«
Последнее редактирование: Декабрь 18, 2007, 18:11 от Cyrax
»
Записан
Вячеслав
Гость
Re: Unicode в drawText
«
Ответ #28 :
Декабрь 18, 2007, 18:35 »
РРРРРРРРР !!!!!!!!!!!!
QVAriant работает в данном случае с QString'om
QStirng - это _всегда_ юникод без всяких "помнит о кодеке"
Поидее heuristicCodec в mysql драйвере (плагине) _должен_ из 1251 сделать юникод , если нет - то можно 1) попробывать вытащить _какой_ кодек он (плагин) использует и допинать его в нужном направлении
2) почитать ссылку 3 постами выше
Ы ?
Записан
Cyrax
Гость
Re: Unicode в drawText
«
Ответ #29 :
Декабрь 18, 2007, 19:13 »
Цитировать
Поидее heuristicCodec в mysql драйвере (плагине) _должен_
Должен - не должен, но почему-то заплатки ставить приходится. В src\sql\drivers\mysql\qsql_mysql.cpp заменил
Цитировать
QTextCodec* heuristicCodec = QTextCodec::codecForName(mysql_character_set_name(mysql))
на
Цитировать
QTextCodec* heuristicCodec = QTextCodec::codecForName("Windows-1251");
Пересобрал, теперь получаю русский текст без toLatin1()...
Меня такой вопрос интересует. В своём предыдущем посте я привёл фрагмент кода. Где там у меня ошибка, приводящая к проблеме с русской кодировкой ?
«
Последнее редактирование: Декабрь 18, 2007, 19:20 от Cyrax
»
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...