![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
haiflive |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 37 Регистрация: 8.7.2010 Пользователь №: 1868 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте. у меня возникла проблема с кодировками..
Подключился к базе 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 |
![]()
Сообщение
#11
|
Студент ![]() Группа: Участник Сообщений: 37 Регистрация: 8.7.2010 Пользователь №: 1868 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Угу, уже подумывал конвертировать базу в mdb, и подключиться через другую строку коннекта..
Меня больше интересует вопрос, не будет ли проблем с кодировкой, когда я подключусь в *.xsl (MS Excel), драйвер-то тот же.. Очень признателен за ответ.. жду пояснения. |
|
|
DenisKh001 |
![]()
Сообщение
#12
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 16.6.2011 Пользователь №: 2752 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
У меня лежит вот здесь: C:\Windows\SysWOW64\odbcad32.exe. Проверил, подключился к *.accdb и все работает.
#include <QApplication> #include <QTableView> #include <QSqlTableModel> int main(int argc, char *argv[]) { QApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("TestMDB"); db.open(); QSqlTableModel model; model.setTable("town"); model.select(); QTableView *view1 = new QTableView; view1->setModel(&model); view1->show(); return a.exec(); } |
|
|
haiflive |
![]()
Сообщение
#13
|
Студент ![]() Группа: Участник Сообщений: 37 Регистрация: 8.7.2010 Пользователь №: 1868 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
У меня ОС х32 забыл сказать..
Открыл одну таблицу, у которой название на латинице.. и там всё нормально 0о все русские буквы в полном порядке.. Подправил кодек для строк
и нормально подключился к таблице с русским названием.. и полный код:
Почему-то db.tables() возвращает битые названия таблиц.. что же воспримем это как баг.. Чудеса.. Это именно тот случай, кода думаешь во вред себе.. Всем спасибо за ответы. Сообщение отредактировал haiflive - 18.6.2011, 11:23 |
|
|
PAFOS |
![]()
Сообщение
#14
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Под дампом QString я имел ввиду содержание ее, т.е. массив unsigned char*. По этому массиву возможно понять какая кодировка.
Еще момент, хотя, я думаю, он не особо тут уместен - может быть несовместимый порядок байтов. Например у тебя прога работает с Big Endian, а драйвер возвращает тебе Little Endian. Такой подводный камень типичный для сетевых приложений, но чем мелкософт не шутит?) |
|
|
Max Payne |
![]()
Сообщение
#15
|
Студент ![]() Группа: Участник Сообщений: 24 Регистрация: 16.2.2012 Пользователь №: 3223 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
У меня такая же проблема , только список таблиц возвращается знаками вопросов, помогите кто решил проблему. Я подключаюсь к *.mdb созданой в Aссess 2003.
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 11.8.2025, 20:20 |