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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с кодировкой в QTableView  (Прочитано 5942 раз)
lint
Гость
« : Ноябрь 27, 2008, 17:05 »

Приложение под Windows.
Виджет QTableView получает таблицу из БД через модель QSqlTableModel. Из базы передаётся кириллицей в кодировке cp1251, в TableView отображается, судя по виду символов, в западно-европейской кодировке Windows.
Пробовал прописывать:
Код:
	QTextCodec *codec=QTextCodec::codecForName("Windows-1251");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
Не помогло.
Ещё пробовал менять кодек на UTF-8, и соответственно менять кодировку выдачи из БД на UTF-8. То же самое.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Ноябрь 27, 2008, 18:00 »

Что за БД? Postgresql, firebird, odbc нормально работают с ютф8.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
lint
Гость
« Ответ #2 : Ноябрь 27, 2008, 18:53 »

СУБД - MySQL
Устанавливал
Код:
	QTextCodec *codec=QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
и в начале сесси MySQL:
Код:
set session character_set_client='utf8';
set session character_set_connection='utf8';
set session collation_connection='utf8_general_ci';
set session character_set_results='utf8';
В итоге - те же символы из западно-европейской кодировки.
Похоже, что QTextCodec на QTableView не влияет...
Записан
sinj
Гость
« Ответ #3 : Май 25, 2009, 13:32 »

присоединяюсь к старому вопросу. Имеется БД, работавшая раньше на mysql 3. Перешел на 5 версию. Перепробовал все вышеописанное, на выходе кракозябры.
Записан
mugabe
Гость
« Ответ #4 : Май 26, 2009, 10:52 »

присоединяюсь к старому вопросу. Имеется БД, работавшая раньше на mysql 3. Перешел на 5 версию. Перепробовал все вышеописанное, на выходе кракозябры.

подозреваю что при переходе на 5 версию сохранилась кодировка latin1. т.е. фактически данные в 1251, но СУБД думает что это latin1.

в данном случае лучше всего все же исправить базу в 1251, или в утф-8. сделать это не так уж просто как может показаться, но инфы в инете по этому вопросу масса
Записан
svjatoslav
Гость
« Ответ #5 : Май 27, 2009, 19:38 »

Мне кажется, перед открытием таблицы в этом соединении с БД надо выполнить запрос "SET NAMES cp1251".
Записан
mugabe
Гость
« Ответ #6 : Май 28, 2009, 05:30 »

Мне кажется, перед открытием таблицы в этом соединении с БД надо выполнить запрос "SET NAMES cp1251".
Тогда все русские буковки будут выглядеть как вопросики.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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