Russian Qt Forum

Qt => Базы данных => Тема начата: lint от Ноябрь 27, 2008, 17:05



Название: Проблема с кодировкой в QTableView
Отправлено: 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. То же самое.


Название: Re: Проблема с кодировкой в QTableView
Отправлено: Пантер от Ноябрь 27, 2008, 18:00
Что за БД? Postgresql, firebird, odbc нормально работают с ютф8.


Название: Re: Проблема с кодировкой в QTableView
Отправлено: lint от Ноябрь 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 не влияет...


Название: Re: Проблема с кодировкой в QTableView
Отправлено: sinj от Май 25, 2009, 13:32
присоединяюсь к старому вопросу. Имеется БД, работавшая раньше на mysql 3. Перешел на 5 версию. Перепробовал все вышеописанное, на выходе кракозябры.


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

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

в данном случае лучше всего все же исправить базу в 1251, или в утф-8. сделать это не так уж просто как может показаться, но инфы в инете по этому вопросу масса


Название: Re: Проблема с кодировкой в QTableView
Отправлено: svjatoslav от Май 27, 2009, 19:38
Мне кажется, перед открытием таблицы в этом соединении с БД надо выполнить запрос "SET NAMES cp1251".


Название: Re: Проблема с кодировкой в QTableView
Отправлено: mugabe от Май 28, 2009, 05:30
Мне кажется, перед открытием таблицы в этом соединении с БД надо выполнить запрос "SET NAMES cp1251".
Тогда все русские буковки будут выглядеть как вопросики.