Russian Qt Forum

Qt => Базы данных => Тема начата: echo от Июнь 14, 2008, 09:45



Название: Sqlite.Проблема с кодировкой.
Отправлено: echo от Июнь 14, 2008, 09:45
Привет, народ.
Имеется следующий код:
Код:
#include <QtSql>
#include <QTextStream>
#include <QTextCodec>
static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("base.db3");
if (!db.open()) {
        qDebug() << "Cannot open database:" << db.lastError();
        return false;
    }
    return true;
}

int main(int argc, char** argv)
{
    QTextCodec* winCodec = QTextCodec::codecForName("Windows-1251");
QTextCodec::setCodecForTr(winCodec);
QTextCodec::setCodecForCStrings(winCodec);
QTextCodec::setCodecForLocale(winCodec);

QCoreApplication app(argc, argv);
QFile file("text.txt");
QTextStream stream(&file);
    if (!createConnection()) {
        return -1;
    }
    QSqlQuery query;
    QString   str  = "select * from main order by adigabza";

    if (!query.exec(str)) {
        qDebug() << "Unable to select a table";
    }
    QSqlRecord rec     = query.record();
    QString    strAdigabza;
    QString    strRussian;
    int    intLength;
file.open(QFile::WriteOnly);
while (query.next()) {
  strAdigabza = query.value(rec.indexOf("adigabza")).toString();
strRussian = query.value(rec.indexOf("russian")).toString();
     intLength  = query.value(rec.indexOf("length")).toInt();
stream << strAdigabza<<" "<<strRussian<<" "<<intLength<<";";
    }

    return 0;
}
Открывай файл а там крякозябры!!!
Как это можно исправить???


Название: Re: Sqlite.Проблема с кодировкой.
Отправлено: indigon от Июнь 14, 2008, 12:00
Вот решение твоей проблемы, правда на другом форуме: QTextStream, QString и кодировка, UTF-8 -> windows-1251 (http://www.forum.crossplatform.ru/index.php?showtopic=45).


Название: Re: Sqlite.Проблема с кодировкой.
Отправлено: pastor от Июнь 14, 2008, 13:38
2 echo: А поиск поюзать по разделу? Уже рассматривалась проблема с кодировкой не раз


Название: Re: Sqlite.Проблема с кодировкой.
Отправлено: kolob от Июнь 06, 2012, 16:57
Прошу сильно не ругать. Но что предлагали на форуме наверно все перепробовал. Искал и на других форумах.
Проблема все та же, из БД данные не корректно отображаются в приложении.

Вопрос, в БД sqlite нужно записывать данные только в кодировке UTF-8?
Первый раз insert-ми записал данной из виндовой консоли(по умолчанию там cp866), ну там где запустил sqlite3.exe. Выдавал "???" и т.д.
После этого попробовал записать данные из файла в кодировке Utf-8. Результат ПОЛОЖИТЕЛЬНЫЙ.


Название: Re: Sqlite.Проблема с кодировкой.
Отправлено: LisandreL от Июнь 06, 2012, 17:25
Вопрос, в БД sqlite нужно записывать данные только в кодировке UTF-8?
В той кодировке, в которой БД создана:
http://www.sqlite.org/pragma.html#pragma_encoding