Russian Qt Forum

Qt => Базы данных => Тема начата: Krow от Сентябрь 19, 2007, 13:11



Название: Qt 4.1.3 + MySQL
Отправлено: 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");
не помогает. может вы что поскажите? куда ещё посмотреть??

форум читал, так что в поиск не стоит отправлять.


Название: Re: Qt 4.1.3 + MySQL
Отправлено: crocus от Сентябрь 19, 2007, 14:10
Ну если ты думаешь, что у тебя кодировка "utf8" - это еще не значит что так оно и есть. Уверен на 99,9% что ср1251. ;)


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 19, 2007, 14:35
Ну если ты думаешь, что у тебя кодировка "utf8" - это еще не значит что так оно и есть. Уверен на 99,9% что ср1251. ;)
каким тогда образом проверить?
я ставил базу на cp1251, кодеки ставил на виндовую кодировку, то же самое получается..
забыл сказать что вся эта констукция работает в лине, а когда в винду начал переводить так возникли проблемы. в лине естественно юникод.


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Dodge от Сентябрь 19, 2007, 14:57
Ну если ты думаешь, что у тебя кодировка "utf8" - это еще не значит что так оно и есть. Уверен на 99,9% что ср1251. ;)

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

to аффтар:
проверьте еще раз натройки кодировки в субд и попробуйте создать таблицу с кирилическими символами из своего приложения, потом естестно его прочитат из тогоже приложения.


Название: Re: Qt 4.1.3 + MySQL
Отправлено: VZ от Сентябрь 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");



Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 19, 2007, 15:13
Ну если ты думаешь, что у тебя кодировка "utf8" - это еще не значит что так оно и есть. Уверен на 99,9% что ср1251. ;)

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

to аффтар:
проверьте еще раз натройки кодировки в субд и попробуйте создать таблицу с кирилическими символами из своего приложения, потом естестно его прочитат из тогоже приложения.
проверял... везде используется родная кутишная кодировка utf8....
пробовал даже насильно кодировать в юникод toUtf8() методом... не помогает...
где проверить нужно ещё???


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 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");


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


Название: Re: Qt 4.1.3 + MySQL
Отправлено: crocus от Сентябрь 19, 2007, 15:27
Некоторые версии/библиотеки MySQL некорректно работают с кириллицей/кодировкой?, например, libmysqld.dll от 4.1.22 - так и не получилось подружить с русским.


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Dodge от Сентябрь 19, 2007, 15:29
Вспомнил еще одну вещ, в одном из проектах(тож кроссплатформенный), я сразу после коннекта, делал приблизительно следующий sql запрос: PRAGMA encoding = "UTF-8". я уже не помню для чего и как, но мне это в свое время помогло.
Единственное отличие, субд у меня было - pstgresql.


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 19, 2007, 15:38
Некоторые версии/библиотеки MySQL некорректно работают с кириллицей/кодировкой?, например, libmysqld.dll от 4.1.22 - так и не получилось подружить с русским.
у меня 5.0.23

ошибки на set names не выдаёт, проверил....


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 19, 2007, 15:42
Вспомнил еще одну вещ, в одном из проектах(тож кроссплатформенный), я сразу после коннекта, делал приблизительно следующий sql запрос: PRAGMA encoding = "UTF-8". я уже не помню для чего и как, но мне это в свое время помогло.
Единственное отличие, субд у меня было - pstgresql.
не помогло...


Название: Re: Qt 4.1.3 + MySQL
Отправлено: crocus от Сентябрь 19, 2007, 15:51
Попробуй подключится к базе с помощью менеджера, например, SQLyog (я им пользуюсь), при подключении выбери кодировку и посмотри что получилось, если читабельно - значит угадал и тогда копай свой код.


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 19, 2007, 16:02
Попробуй подключится к базе с помощью менеджера, например, SQLyog (я им пользуюсь), при подключении выбери кодировку и посмотри что получилось, если читабельно - значит угадал и тогда копай свой код.
спасиб. щас проверю..
на всякий случай меняю версию мускула... мжет в нём дело..


Название: Re: Qt 4.1.3 + MySQL
Отправлено: VZ от Сентябрь 19, 2007, 18:05
по второму.. делал так же как и ты советуешь, но насколько я читал такое рабоает тока в винде, а так как я писал должно работать на всех платформах...
ошибку.... гляну...
тебя обманули. или ты сам обманулся. у нас работает и в win и в lin и в разных сочетаниях.
зависит только от версии сервера, но как я понял у тебя подходящая версия.


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 20, 2007, 07:28
по второму.. делал так же как и ты советуешь, но насколько я читал такое рабоает тока в винде, а так как я писал должно работать на всех платформах...
ошибку.... гляну...
тебя обманули. или ты сам обманулся. у нас работает и в win и в lin и в разных сочетаниях.
зависит только от версии сервера, но как я понял у тебя подходящая версия.

делал и такой запрос. ничего.. скорее всего проблема где-то в программе... а вот где??? не могу понять :(


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 20, 2007, 08:37
Ну если ты думаешь, что у тебя кодировка "utf8" - это еще не значит что так оно и есть. Уверен на 99,9% что ср1251. ;)
думаю ты прав в том что там не юникод...
но и не cp1251 возможно Latin1...  но почему она не меняется установкой кодека?????


Название: Re: Qt 4.1.3 + MySQL
Отправлено: crocus от Сентябрь 20, 2007, 09:39
Вероятно меняется ;D, да только серверу все равно, какие символы вопросиками забивать, если кодировка не подходит.
Сделай дамп всей базы -открой продвинутым редактором файлов(под виндой)-сконвертируй весь файл в юникод (или ср1251) и восстанови базу, смысл в том чтоб  ты мог нормально читать  файл по-русски в сохраненой кодировке потому, что если просто sql кракозябрами,  то и в базе будет лабуда.


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 20, 2007, 10:27
Вероятно меняется ;D, да только серверу все равно, какие символы вопросиками забивать, если кодировка не подходит.
Сделай дамп всей базы -открой продвинутым редактором файлов(под виндой)-сконвертируй весь файл в юникод (или ср1251) и восстанови базу, смысл в том чтоб  ты мог нормально читать  файл по-русски в сохраненой кодировке потому, что если просто sql кракозябрами,  то и в базе будет лабуда.
открывал программой SQLyog.. проверил. в СУБД всё в UTF-8.... прям оттуда менял данные. через командную строку видно что там utf-8... а в программе всё равно вопросы...

тут у меня возник вопрос....  а какой движок по дефолту используется в мускуле? может в этом ещё дело.. хотя я сомневаюсь...


Название: Re: Qt 4.1.3 + MySQL
Отправлено: Krow от Сентябрь 22, 2007, 19:00
я вот тут подумал.. а не может ли эта проблема быть в самой кути под вынь?? версия как никак 4,1,3 под 2005 MSVS... кто чо думает? просо качать 40 метров из сети для меня не очень комфортно.. поэтому интересуюсь у вас, в этом может быть проблема???