Russian Qt Forum
Сентябрь 30, 2024, 10:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Qt 4.1.3 + MySQL  (Прочитано 9850 раз)
Krow
Гость
« : Сентябрь 19, 2007, 13:11 »

проблема опять таки в кодировках MySQL.
кодировка СУБД utf8. все кодировки настроены на utf8. а при отображении в QTableView QSqlTableModel кириллица отображается всё равно вопросами.
в main.cpp написал:
Код:
QTextCodec *codec=QTextCodec::codecForName("utf8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
mainWindow *window = new mainWindow;
так же поставил на всякий случай:
Код:
query.exec ("SET NAMES utf8_general_ci");
не помогает. может вы что поскажите? куда ещё посмотреть??

форум читал, так что в поиск не стоит отправлять.
Записан
crocus
Гость
« Ответ #1 : Сентябрь 19, 2007, 14:10 »

Ну если ты думаешь, что у тебя кодировка "utf8" - это еще не значит что так оно и есть. Уверен на 99,9% что ср1251. Подмигивающий
Записан
Krow
Гость
« Ответ #2 : Сентябрь 19, 2007, 14:35 »

Ну если ты думаешь, что у тебя кодировка "utf8" - это еще не значит что так оно и есть. Уверен на 99,9% что ср1251. Подмигивающий
каким тогда образом проверить?
я ставил базу на cp1251, кодеки ставил на виндовую кодировку, то же самое получается..
забыл сказать что вся эта констукция работает в лине, а когда в винду начал переводить так возникли проблемы. в лине естественно юникод.
« Последнее редактирование: Сентябрь 19, 2007, 14:38 от Krow » Записан
Dodge
Гость
« Ответ #3 : Сентябрь 19, 2007, 14:57 »

Ну если ты думаешь, что у тебя кодировка "utf8" - это еще не значит что так оно и есть. Уверен на 99,9% что ср1251. Подмигивающий

очень информативный ответ... иногда лучше живать чем ... писать. Подмигивающий

to аффтар:
проверьте еще раз натройки кодировки в субд и попробуйте создать таблицу с кирилическими символами из своего приложения, потом естестно его прочитат из тогоже приложения.
Записан
VZ
Гость
« Ответ #4 : Сентябрь 19, 2007, 15:00 »

Код:
QTextCodec *codec=QTextCodec::codecForName("utf8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
это, вероятно, лишнее.

Цитировать
Код:
query.exec ("SET NAMES utf8_general_ci");
не помогает. может вы что поскажите? куда ещё посмотреть??
можно посмотреть на сообщение об ошибке.
должно быть что-то вроде "Unknown character set: 'utf8_general_ci'"  Подмигивающий
Нужно было
Код:
query.exec ("SET NAMES utf8");

« Последнее редактирование: Сентябрь 19, 2007, 15:04 от VZ » Записан
Krow
Гость
« Ответ #5 : Сентябрь 19, 2007, 15:13 »

Ну если ты думаешь, что у тебя кодировка "utf8" - это еще не значит что так оно и есть. Уверен на 99,9% что ср1251. Подмигивающий

очень информативный ответ... иногда лучше живать чем ... писать. Подмигивающий

to аффтар:
проверьте еще раз натройки кодировки в субд и попробуйте создать таблицу с кирилическими символами из своего приложения, потом естестно его прочитат из тогоже приложения.
проверял... везде используется родная кутишная кодировка utf8....
пробовал даже насильно кодировать в юникод toUtf8() методом... не помогает...
где проверить нужно ещё???
Записан
Krow
Гость
« Ответ #6 : Сентябрь 19, 2007, 15:16 »

Код:
QTextCodec *codec=QTextCodec::codecForName("utf8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
это, вероятно, лишнее.

Цитировать
Код:
query.exec ("SET NAMES utf8_general_ci");
не помогает. может вы что поскажите? куда ещё посмотреть??
можно посмотреть на сообщение об ошибке.
должно быть что-то вроде "Unknown character set: 'utf8_general_ci'"  Подмигивающий
Нужно было
Код:
query.exec ("SET NAMES utf8");


по первому квоту.. это уже было сделано от безысходности...
по второму.. делал так же как и ты советуешь, но насколько я читал такое рабоает тока в винде, а так как я писал должно работать на всех платформах...
ошибку.... гляну...
Записан
crocus
Гость
« Ответ #7 : Сентябрь 19, 2007, 15:27 »

Некоторые версии/библиотеки MySQL некорректно работают с кириллицей/кодировкой?, например, libmysqld.dll от 4.1.22 - так и не получилось подружить с русским.
Записан
Dodge
Гость
« Ответ #8 : Сентябрь 19, 2007, 15:29 »

Вспомнил еще одну вещ, в одном из проектах(тож кроссплатформенный), я сразу после коннекта, делал приблизительно следующий sql запрос: PRAGMA encoding = "UTF-8". я уже не помню для чего и как, но мне это в свое время помогло.
Единственное отличие, субд у меня было - pstgresql.
Записан
Krow
Гость
« Ответ #9 : Сентябрь 19, 2007, 15:38 »

Некоторые версии/библиотеки MySQL некорректно работают с кириллицей/кодировкой?, например, libmysqld.dll от 4.1.22 - так и не получилось подружить с русским.
у меня 5.0.23

ошибки на set names не выдаёт, проверил....
Записан
Krow
Гость
« Ответ #10 : Сентябрь 19, 2007, 15:42 »

Вспомнил еще одну вещ, в одном из проектах(тож кроссплатформенный), я сразу после коннекта, делал приблизительно следующий sql запрос: PRAGMA encoding = "UTF-8". я уже не помню для чего и как, но мне это в свое время помогло.
Единственное отличие, субд у меня было - pstgresql.
не помогло...
Записан
crocus
Гость
« Ответ #11 : Сентябрь 19, 2007, 15:51 »

Попробуй подключится к базе с помощью менеджера, например, SQLyog (я им пользуюсь), при подключении выбери кодировку и посмотри что получилось, если читабельно - значит угадал и тогда копай свой код.
Записан
Krow
Гость
« Ответ #12 : Сентябрь 19, 2007, 16:02 »

Попробуй подключится к базе с помощью менеджера, например, SQLyog (я им пользуюсь), при подключении выбери кодировку и посмотри что получилось, если читабельно - значит угадал и тогда копай свой код.
спасиб. щас проверю..
на всякий случай меняю версию мускула... мжет в нём дело..
Записан
VZ
Гость
« Ответ #13 : Сентябрь 19, 2007, 18:05 »

по второму.. делал так же как и ты советуешь, но насколько я читал такое рабоает тока в винде, а так как я писал должно работать на всех платформах...
ошибку.... гляну...
тебя обманули. или ты сам обманулся. у нас работает и в win и в lin и в разных сочетаниях.
зависит только от версии сервера, но как я понял у тебя подходящая версия.
Записан
Krow
Гость
« Ответ #14 : Сентябрь 20, 2007, 07:28 »

по второму.. делал так же как и ты советуешь, но насколько я читал такое рабоает тока в винде, а так как я писал должно работать на всех платформах...
ошибку.... гляну...
тебя обманули. или ты сам обманулся. у нас работает и в win и в lin и в разных сочетаниях.
зависит только от версии сервера, но как я понял у тебя подходящая версия.

делал и такой запрос. ничего.. скорее всего проблема где-то в программе... а вот где??? не могу понять Грустный
« Последнее редактирование: Сентябрь 20, 2007, 07:30 от Krow » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.091 секунд. Запросов: 21.