|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Доброго времени суток. Как в interbase 2009 можно установить кодировку для работы с существующей БД. Пишу на Qt, выполняю запрос SELECT с помощью QSqlQuery. Во время выполнения next() возвращает FALSE, тот же самый запрос в ibexpert выполняется. Если в ibexpert установить кодировку отличную от win1251, то наблюдаю туже самую ошибку, что и в Qt. Как победить ? =))) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 16:20 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Что там используется для подключения? Где указываются параметры? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 16:39 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
QSqlQuery query = db.exec("SET NAMES cp1251"); query.exec("SELECT * FROM table1"); while(query .next()) - не выполняется { .... } qDebug() << query.lastError().text(); Выдаёт: "arithmetic exception, numeric overflow, or string truncation Could not fetch next item" Для некоторых баз выполняется несколько итераций, а потом такая же ошибка. в main.cpp есть QTextCodec::setCodecForLocale(QTextCodec::codecForName("cp1251")); ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 16:52 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Abrazivdb.exec("SET NAMES cp1251"); В ибэйзе есть такое? В общем, кодировка указывается при подключении, точнее в параметрах подключения. http://www.ibase.ru/ibrusfaq/ ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 16:56 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
QSqlQuery queryOut(QString("set names win1251"), dbout); так тоже не работает. хз чё делать ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:00 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
AbrazivQSqlQuery query = db.exec("SET NAMES cp1251"); query.exec("SELECT * FROM table1"); 1. чарсет соединения указывается при коннекте к базе, а не после. 2. "не выполняется" - нет такого слова, ошибки либо нет, либо она есть. А если есть - то у нее есть текст сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:07 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
я же привёл этот текст "arithmetic exception, numeric overflow, or string truncation Could not fetch next item" ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:09 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Abraziv, еще раз - кодировка выставляется при коннекте к базе. Не отвечайте, делайте что советуют. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:16 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
dbout.setConnectOptions(QString("ISC_DPB_LC_CTYPE=cp1251")); не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:21 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Abrazivне работает Откуда такая опция? kdvеще раз - кодировка выставляется при коннекте к базе. С сайта инфа. Должно работать? СКРИПТЫ И ISQL Собственно, об этом было сказано ранее. Т. е. кодировку символов нужно указать перед коннектом или созданием базы данных. Буквально – в начале скрипта написать: SET NAMES WIN1251; Эта же команда выдается интерактивно перед коннектом к БД через утилиту командной строки ISQL, если консоль показывает символы этой кодировки. Если консоль работает, например, в utf8, то придется указывать SET NAMES UTF8; ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:28 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Из доков на Qt. Я не в консоле работаю ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:34 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Abraziv, опять "не работает". да что ж такое... Вот так не работает? db.setHostName("комп с ИБ"); db.setDatabaseName("где база"); db.setConnectOptions("ISC_DPB_LC_CTYPE=WIN1251"); db.open(); ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:46 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Abrazivdbout.setConnectOptions(QString("ISC_DPB_LC_CTYPE=cp1251")); не работает WIN1251, а не CP1251. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:46 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
wadmanСКРИПТЫ И ISQL Собственно, об этом было сказано ранее. Т. е. кодировку символов нужно указать перед коннектом или созданием базы данных. Буквально – в начале скрипта написать: SET NAMES WIN1251;спутал теплое с мягким? set names говорит isql в какой читать символы из скрипта. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:49 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
kdv , авторопять "не работает". да что ж такое... Вот так не работает? db.setHostName("комп с ИБ"); db.setDatabaseName("где база"); db.setConnectOptions("ISC_DPB_LC_CTYPE=WIN1251"); db.open(); Unsupported encoding: WIN1251. Using UNICODE_FFS for ISC_DPB_LC_CTYPE. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:52 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
If Qt doesn't support the given text encoding the driver will issue a warning message and connect to the database using UNICODE_FSS. Note that if the text encoding set when connecting to the database is not the same as in the database, problems with transliteration might arise. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:56 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Короче Qt не понимает Win1251, но её понимает IBase, напротив CP1251 понимает QT, но не понимает IBase. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:58 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Ну так Qt, наверное, UTF8 хочет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 17:59 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Да нет же. Тут драйвер походу нужно свой писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 18:00 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Abraziv, ну и драйвер.... А UTF8 поддерживает? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 18:03 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
utf-8 по умолчанию стоит, база понимает win1251. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 18:04 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Abrazivutf-8 по умолчанию стоит Уверен? Если кодировка коннекта utf8 по умолчанию, то ошибок транслитерации при выполнении запроса, возвращающего данные в win1251 быть не должно - сервер просто перекодирует win1251 в utf8 перед тем, как отдать их клиенту. Законнекться в эксперте с UTF8 вместо WIN1251 и проверь.. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 18:14 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 18:31 |
|
Установить кодировку БД для работы с ней
|
|||
---|---|---|---|
#18+
Проверял, ошибка точно такая же. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2017, 00:43 |
|
|
start [/forum/topic.php?fid=40&fpage=43&tid=1561519]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 302ms |
total: | 456ms |
0 / 0 |