crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Перекодировка строк из DBF, Перекодировка строк из DBF
Гость_Ефремов_*
сообщение 30.12.2014, 17:21
Сообщение #1





Гости








    


Здравствуйте.

Подскажите, пожалуйста, как в QT 5 правильео прочитать DBF файлы от 1С.
При печати в панеле отладки текстовых полей из DBF, кодированных в windows-1251, получаю "кракозяблы".

Вот код:
#include <QApplication>
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QSqlRecord>

bool readDBF()
{
    const QStringList dbParams = QStringList()
            << "DRIVER={Microsoft dBASE Driver (*.dbf)}"
            << "DBQ=C:\\DBaseEx";
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName(dbParams.join(';'));
    if (!db.open()) {
        QMessageBox::critical(0, qApp->tr("Ощибка при открытии базы"),
            qApp->tr("Не возможно установить соединенние с базой данных.\n"
                     "Это необходимо для SQLite поддержки. Прочитайте "
                     "документацию по Qt SQL, чтобы правильно настроить "
                     "соединение с базой данных.\n\n"
                     "Продолжение работы невозможно."), QMessageBox::Cancel);
        return false;
    }
    QTextCodec *codecWin = QTextCodec::codecForName("Windows-1251");
    QSqlQuery sql = QSqlQuery();
    sql.exec("SELECT id, descr, ismark FROM sc27156 WHERE ismark IS NULL ORDER BY descr");
    QSqlRecord rec = sql.record();
    QString fields;
    for(int j=0; j<rec.count(); j++)
        fields += rec.fieldName(j) + "; ";
    qDebug() << "В таблице столбцов: " << rec.count() << " с именами: " << fields;
    qDebug() << "В таблице записей: " << sql.size();
    // **** Первый вариант http://habrahabr.ru/post/234089/ ****
    while(sql.next())
    {   QString sss = sql.value(1).toString(); //без кодека
        qDebug() << rec.fieldName(1) << " : " << codecWin->toUnicode(sql.value(1).toByteArray());
    }
}


Признак кодовой страницы в заголовке DBF устанавливал - не помогшает.

Заранее признателен.

Ефремов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.2.2020, 18:35