Кодировки при работе с MySQL |
Здравствуйте, гость ( Вход | Регистрация )
Кодировки при работе с MySQL |
zerling |
13.2.2009, 12:05
Сообщение
#1
|
Студент Группа: Участник Сообщений: 19 Регистрация: 31.10.2008 Из: г.Мытищи Московской обл. Пользователь №: 406 Спасибо сказали: 0 раз(а) Репутация: 0 |
База MySQL 4.1, QT 4.3.4 (под windows)
Нужно читать и записывать в БД русские буквы. Таблицы в базе лежат в кодировке UTF8 (даже специально файлы таблиц посмотрел) На форме таблица заполняется таким образом: (взял из примера в асистенте)
После соединения с БД делаю запрос QSqlQuery(QString("set character set КОДИРОВКА;"),db); для того, чтоб из БД читало в заданной кодировке.. пробовал запрос не делать.. Пробовал задавать для кодеков и для БД кодировки UTF8, cp1251 и даже cp866 :-) Ничего не помогает отобразить в таблице русские буквы.. Какие кодеки надо поставить в setCodecForCStrings(), setCodecForTr(), setCodecForLocale() чтоб русские буквы отображались нормально в таблице? |
|
|
Константин |
13.2.2009, 14:25
Сообщение
#2
|
Студент Группа: Участник Сообщений: 69 Регистрация: 9.2.2009 Пользователь №: 539 Спасибо сказали: 15 раз(а) Репутация: 1 |
а если через гуй? например, mysql-gui-tools.
и обязательно попробуй через sqlbrowser из стандартных примеров Сообщение отредактировал Константин - 18.2.2009, 16:50 |
|
|
zerling |
18.2.2009, 16:49
Сообщение
#3
|
Студент Группа: Участник Сообщений: 19 Регистрация: 31.10.2008 Из: г.Мытищи Московской обл. Пользователь №: 406 Спасибо сказали: 0 раз(а) Репутация: 0 |
В общем прикол с кодировками так и не решился.
из командной строки запускаю 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 |
|
|
Текстовая версия | Сейчас: 15.1.2025, 16:00 |