powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Qt Mysql и cp1251(второе дыхание)
1 сообщений из 1, страница 1 из 1
Qt Mysql и cp1251(второе дыхание)
    #33355830
bob_j
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация следующая:
Первые три записи добавлены в ТБД непосредственно из 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
1 сообщений из 1, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Qt Mysql и cp1251(второе дыхание)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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