Russian Qt Forum

Qt => Вопросы новичков => Тема начата: demiurg от Январь 30, 2013, 13:08



Название: Qt, MySQL, русские символы.
Отправлено: demiurg от Январь 30, 2013, 13:08
Код:
QSqlDatabase db =  QSqlDatabase::database("db",false);
QSqlQuery sql = QSqlQuery(db);
sql.exec("SELECT * FROM object");
QString temp;
while(sql.next())
            {
            temp=sql.value(1).toString();
            }
в мейне.

Код:
QTextCodec::setCodecForTr(QTextCodec::codecForName("CP1251"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

Как бы не извращался - одни кракозябры вылазят в temp :)
MySql 5.5
character_set_client     | latin1
character_set_connection | latin1
character_set_database   | utf8
character_set_filesystem | binary
character_set_results    | latin1
character_set_server     | utf8
character_set_system     | utf8

Как сделать , чтобы нормально отображало? Уже всю базу в Utf8 перегнал.
--
При вставке в базу - вместо русских символов - одни ?????

Код:
sql.prepare("INSERT INTO object(name,address) VALUES(:name,:address);");
sql.bindValue(":name",temp.toUtf8());
sql.bindValue(":address","Адрес");
sql.exec();



Название: Re: Qt, MySQL, русские символы.
Отправлено: schmidt от Февраль 12, 2013, 21:36
Цитировать
character_set_results | latin1

Мне так сильно кажется, что проблема именно здесь :) Выставьте для начала кодировку в UTF-8, скомандовав мускулу `SET NAMES utf-8` Когда в своё время кодил на PHP+MySQL часто натыкался на ту же проблему :)

Из документации по MySQL: [ http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html (http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html) ]
Цитировать
The character_set_results system variable indicates the character set in which the server returns query results to the client. This includes result data such as column values, and result metadata such as column names.