Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Символы вместо русских букв, при работе Qt с таблицами в БД 
:(
    Опции темы
MoxHaToe
Дата 15.1.2010, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 31.1.2009

Репутация: нет
Всего: нет



Что необходимо добавить в код для корректного чтения русских букв из таблицы? 
Код

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    DB=QSqlDatabase::addDatabase("QODBC");
    DB.setDatabaseName("MYSQL");
    if (!DB.open())
    {
        ui->label_write->setText("DB open: " + DB.lastError ().text());
        ui->label_read->setText("DB open: " + DB.lastError ().text());
    }
    }

Код

void MainWindow::on_read_clicked()
{
    ui->listWidget->clear();
    QSqlQuery query(DB);
    query.exec(QObject::tr("SET NAMES 'cp1251'"));
    if (!query.exec("SELECT *FROM  Students; "))
        ui->label_read->setText("Query:"+query.lastError().text());
    QSqlRecord rec = query.record();
    int id;
    QString name;
    int course;
    while (query.next())
    {
            id = query.value(rec.indexOf("id")).toInt();
            name = query.value(rec.indexOf("name")).toString();
            course = query.value(rec.indexOf("course")).toInt();
            ui->listWidget->addItem(name+" (" +QString::number(course)+")");
    }
}

PM MAIL   Вверх
djamshud
Дата 15.1.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 5
Всего: 39



query.exec(QObject::tr("SET NAMES 'encoding'"));

Encoding должен соответствовать вашей локали или, если используется, тому, что в QTextCodec::setCodecForCStrings.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
ecspertiza
Дата 15.1.2010, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



djamshud Правильно тебе ответил просто чуть добавлю, вот тут 

Цитата(MoxHaToe @  15.1.2010,  20:02 Найти цитируемый пост)
    query.exec(QObject::tr("SET NAMES 'cp1251'"));
    if (!query.exec("SELECT *FROM  Students; "))
        ui->label_read->setText("Query:"+query.lastError().text());



ты выставляешь кодировку cp1251 , а в Qt используется UTF-8 вроде как, поэтому у тебя и получаются крякозяблы.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0935 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.