Перечитал топики, но так и не смог сделать :oops:
Можете пинать, но только помогите !
Вообщем проблема в кодировках вместо русских букв всякое лезет... итак, исходные данные:
ОС(и клиент и сервер): Windows XP SP2
Qt: 4.2.0 commerce
MySQL: 4.1
Внутренняя кодировка MySQL: при установке указал из трех вариантов на мульти языковую поддержку. Вот строчка из my.ini:
default-character-set=utf8
Запустил сервер, запустил клиент mysql.exe из поставки, создал database, в ней таблицу с единственным полем типа CHAR(24).
Добавил в таблицу русское слово, затем проверил через SELECT. Слово в консоле отобразилось крякозябрами. Удалил запись, набрал "SET NAMES utf8;", снова добавил ту же запись и проверил - на этот раз всё нормально, русские буквы.
А вот в Qt немогу такого же добиться
.
Вот код:
в main():
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
где-то дальше:
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("Test1");
db.setUserName("root");
db.setPassword("phrack");
bool ok = db.open();
if(ok == false)
{
errorMessage(db.lastError().text());
qApp->exit(1);
}
QSqlQuery q;
if(q.exec("SET NAMES utf8;") == false)
errorMessage("SET NAMES utf8 == false");
QSqlTableModel* model = new QSqlTableModel(this, db);
model->setTable("testtable");
model->select();
for(int i=0; i<model->rowCount(); ++i)
{
QString name = model->record(i).value("Name").toString();
}
Пробывал q.exec("SET NAMES utf8_general_ci;"); - возвращает false, база не поддерживает видимо.
Буду благодарен любому совету !
[/code]