crossplatform.ru

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

> QODBC MS Access(*.accdb) кодировка, Вопросики в черных квадратиках
haiflive
  опции профиля:
сообщение 9.6.2011, 16:01
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 8.7.2010
Пользователь №: 1868

Спасибо сказали: 1 раз(а)




Репутация:   0  


Здравствуйте. у меня возникла проблема с кодировками..
Подключился к базе MS Access, через ODBC драйвер, делаю запрос QSqlDatabase::tables(), и вывожу результат в QTextEdit и получаю кучу вопросиков в чёрных ромбиках..
Латиница отабражается нормально, а вот русские буквы(русские буквы в названиях таблиц и их полей не я накуралесил) отображаются тёмными ромбиками внутри которых вопросики, обычно это происходит когда cp-1251 отображают как utf-8, странно токуда вылезло cp-1251?. ODBC кажется кодирует в ASCII кодировке..

Вобщем, варианты типа этих не работаю
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));//UTF-8//ASCII, ANSI// CP-1251
FromUTF8 , toLocal8bit не помогают, уже весь иннет перерыл..

заставить базу в mySQL как бы просто, один sql SET NAMES cp1251, ну или посмотреть кодировки SHOW GLOBAL VARIABLES LIKE 'char%';
а в odbc почему-то выполнение этих запросов query.exec(); возвращает false;

Как можно в приложении изменить кодировку, изменить кодировку соединения с базой?. ну или на крайняк изменить кодировку DSN драйвера?.

OC windows 7, Qt SDK_1_1_1, QT4.7.3, mingw.

ммм.. где здесь правка собственных постов?. извеняюсь за ошибки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
haiflive
  опции профиля:
сообщение 10.6.2011, 9:25
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 37
Регистрация: 8.7.2010
Пользователь №: 1868

Спасибо сказали: 1 раз(а)




Репутация:   0  


вот собственно переписал прогармму
#include <QtGui/QApplication>

#include <QtSql>
#include <QDebug>
#include <QLabel>
#include <QTextEdit>
#include <QVBoxLayout>
#include <QSqlQuery>
#include <QTextCodec>

//#include "mainwindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DSN='';CharSet='UTF8';DBQ=C:/Qt/projects/connetDatabase/123.accdb");

    bool ok = db.open();
    qDebug() << "is open" << db.lastError().text() << ok;

    QTextEdit *te = new QTextEdit;
    if(!ok)
        te->insertPlainText(db.lastError().text());

    for(int i = 0; i < db.tables().size(); i++)
        te->insertPlainText( db.tables().at(i) + "Текст," );

    te->show();
//    MainWindow w;
//    w.show();

    return a.exec();
}


вывод, хотя думаю он испортится:
����������


когда сменил кодировку приложения с UTF8 на cp1251
с помошью строки
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));
то получил что "Текст," превратился в похожий набор символов, если указать cp1251 то солов "Текст," отображатеся нормально.

Дамп QString это как?.

В приложении кусок базы
Прикрепленные файлы
Прикрепленный файл  123.zip ( 17.36 килобайт ) Кол-во скачиваний: 173
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- haiflive   QODBC MS Access(*.accdb) кодировка   9.6.2011, 16:01
- - PAFOS   Поиграйся с параметром строки подключения CharSet....   9.6.2011, 16:41
- - haiflive   так чтоли.. db.setDatabaseName("DRIVER={Micro...   9.6.2011, 17:48
- - Litkevich Yuriy   Цитата(haiflive @ 9.6.2011, 19:01) странн...   9.6.2011, 17:52
- - haiflive   может я не правильно делаю, но такой вариант выдаё...   10.6.2011, 2:54
- - Litkevich Yuriy   Цитата(haiflive @ 10.6.2011, 5:54) может ...   10.6.2011, 6:44
- - PAFOS   Если ты в строке подключения указал UTF-8 то будь ...   10.6.2011, 7:54
- - haiflive   вот собственно переписал прогармму #include ...   10.6.2011, 9:25
- - haiflive   Ппц, весь гугл облазил.. теперь когда ищу постонно...   11.6.2011, 10:56
- - DenisKh001   К *.accdb не подключался, но подключался к *.mdb. ...   16.6.2011, 20:05
- - haiflive   Угу, уже подумывал конвертировать базу в mdb, и по...   17.6.2011, 15:46
- - DenisKh001   У меня лежит вот здесь: C:\Windows\SysWO...   17.6.2011, 17:05
- - haiflive   У меня ОС х32 забыл сказать.. Открыл одну таблицу...   18.6.2011, 11:22
- - PAFOS   Под дампом QString я имел ввиду содержание ее, т.е...   24.6.2011, 8:01
- - Max Payne   У меня такая же проблема , только список таблиц во...   16.2.2012, 16:00


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


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




RSS Текстовая версия Сейчас: 16.6.2024, 1:05