Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Qt Mysql и cp1251(второе дыхание) / 1 сообщений из 1, страница 1 из 1
01.11.2005, 16:57
    #33355830
bob_j
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Qt Mysql и cp1251(второе дыхание)
Ситуация следующая:
Первые три записи добавлены в ТБД непосредственно из shell MySQL после
команды SET NAMES cp1251.
Последняя добавлена из программы написанной на Qt с переданным вБД
параметром SET NAMES cp1251.
При установке SET NAMES cp1251 в shell MySQL первые три записи
отображаются правильно, последняя отображается нечитабельными
символами (кодировку менял на все которые только поддерживает MySQL).
При просмотре ТБД из программы написанной на Qt ни одна запись не
отображается правильно. В заголовке окна выведен текст для того чтобы
быть уверенным, что локаль установлена в ср1251.
Все вышеописанное запускается под управлением WindowsXP.

Код:
#include "vwdb.h"
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QTextStream>
#include <QTranslator>

ViewDB::ViewDB(QWidget *parent): QWidget(parent)
{
setupUi(this);

connectionDB();

model = new QSqlTableModel(this);
model->setTable("TestTable");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();

model->setHeaderData(0, Qt::Horizontal, tr("Идентификатор"));
model->setHeaderData(1, Qt::Horizontal, tr("Статус"));

tvwView->setModel(model);
}

void ViewDB::connectionDB()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("TestDB");
db.setUserName("root");
db.setPassword("rootpass");

db.open();

QSqlQuery query;
query.exec("SET NAMES cp1251");
query.exec("SELECT* FROM TestTable");
query.next();

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

query.prepare("INSERT INTO TestTable (id, status) "
"VALUES (:id, :status)");
query.bindValue(":id", 40);
query.bindValue(":status", "Гость");
query.exec();

setWindowTitle("Текст в ср1251");
}
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Qt Mysql и cp1251(второе дыхание) / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]