Здравствуйте, гость ( Вход | Регистрация )
Гость_ALex-Annet_* | Дата 10.12.2010, 19:51 |
Мне помогло:
|
|
zerling | Дата 20.2.2009, 9:10 |
зря Знаю, что зря. Наступил на подводные грабли уже: при чтении всё было ОК, но при записи данные портило т.к. запрос к БД драйвер тоже перекодирует... вышел из положения так: На чтении оставил правку в драйвере На запись в программе использую
Так в БД пишет нормально, но меня не волнует скорость т.к. ожидаемая интенсивность запросов примерно 10 штук в неделю. С удовольствием бы решил без правок, но сроки жмут... |
|
Константин | Дата 19.2.2009, 16:39 |
зря | |
zerling | Дата 19.2.2009, 14:47 |
Решил проблему!! Правда коряво сделал... В общем подправил драйвер QT434\src\sql\drivers\mysql\qsql_mysql.cpp Исправил кусочек кода в функции static QVariant::Type qDecodeMYSQLType(int mysqltype, uint flags)
От MySQL прошу давать данные в кодировке cp1251 и всё отображается нормально, перестали портится русские. |
|
zerling | Дата 19.2.2009, 8:51 |
не торопись с выводами. mysql-gui-tools так и не попробовал? Гуи тулз пробовал.. Скачал бинарики, чтоб не компилировать у себя.. через них всё читается/пишется нормально. Пробовал сервер заменить с 4.1 на 5й (5.0.67).. пересоздавал в 5м базу заново, при этом поменял либу в QT на ту, что от 5го шла, перекомпилировал QT.. Результат тот же... |
|
Константин | Дата 18.2.2009, 16:51 |
не торопись с выводами. mysql-gui-tools так и не попробовал? | |
zerling | Дата 18.2.2009, 16:49 |
В общем прикол с кодировками так и не решился. из командной строки запускаю mysql --user -p (ввожу пароль) Даю команду set character set cp866; - консоль ХР по моему работает в cp866 потом делаю select * from table1; показывает русские буквы нормалньно... Когда соединяюсь из QT
происходит такая беда: вывод qDebug: код 3f для всех русских букв нормальные коды для цифр для 1 - 31h 2 -32h и английских букв. цифры и буквы нормально печатаются в консоли строка qDebug(q.value(1).toByteArray().toHex()); вроде как с кодировкой не играется и вывод считанных данных в шеснадцатеричном виде не должен зависеть от кодека. toByteArray - представляем результат запроса как массив байтов toHex - получаем шеснадцатеричную строку... По моему данные портятся на уровне библиотеки для работы с БД из QT4 |
|
Константин | Дата 13.2.2009, 14:25 |
а если через гуй? например, mysql-gui-tools. и обязательно попробуй через sqlbrowser из стандартных примеров |
|
zerling | Дата 13.2.2009, 13:52 |
zerling, а в папке с базой (непосредственно в папке схемы) имеется файлик db.opt? и, если имеется, что в нём написано? В файлике вот это: default-character-set=utf8 default-collation=utf8_general_ci Попробовал так QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); // Для внутренних преобразований Qt QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); // Для функций перевода tr() Результат: Знаки вопроса вместо символов если БД отдаёт в UTF8 Крокозяблы если в cp1251 |
|
Константин | Дата 13.2.2009, 13:22 |
zerling, а в папке с базой (непосредственно в папке схемы) имеется файлик db.opt? и, если имеется, что в нём написано? | |
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 20.4.2024, 3:37 |