Russian Qt Forum

Программирование => Базы данных => Тема начата: bob от Январь 28, 2006, 14:22



Название: Кирилица
Отправлено: bob от Январь 28, 2006, 14:22
Данная тема уже поднималась мною в форуме по Qt, но так и не получила конструктивного завершения.

Используются
Qt 4.1.0
MySQL 4.1
OS WindowsXP Professional SR2

БД таблица и поля типа varchar, создаются с инструкцией DEFAULT CHARACTER SET utf8
При запуске программы выполняю


Код:

QTextCodec *codec;
codec=QTextCodec::codecForName("utf8");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForTr(codec);


При соединении с БД

Код:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("mytest");
db.setUserName("root");
db.setPassword("57r80t10");
db.setHostName("localhost");

QSqlQuery query;
 query.exec("SET NAMES utf8");


Ввожу текстовое значение кирилическими символами (ни каких проблем с отображением символов нет) через поле ввода

Код:

query.prepare("INSERT INTO test(status) VALUES(:st)");
query.bindValue(":st", lineEdit->text());
query.exec();


После добавления, только что введенное в ТБД значение отображается через QTableView. Вот тут и проблема - текст отображается в виде знаков вопроса.
Идеи есть? :?:


Название: Кирилица
Отправлено: Admin от Январь 28, 2006, 23:40
Раскажи сначала у тебя в базе все правильно сидит?


Название: Кирилица
Отправлено: bob от Январь 29, 2006, 02:22
Цитата: "Admin"
Раскажи сначала у тебя в базе все правильно сидит?

Что именно должно быть правильно?
А ларчик просто открывался. Ошибка выделена красным цветом.
Вот то, что я выполнял:query.exec("SET NAMES utf8");[/i] и все кирилические символы отображались как знак вопроса.

Вот то, что нужно было выполнить:query.exec("SET NAMES utf8;");[/i]
Все, проблема ушла после того как был передан символ точка с запятой после инструкции "SET NAMES utf8".