Название: Кирилица Отправлено: bob от Январь 22, 2006, 15:06 Данная тема уже поднималась мною в этом форуме, но так и не получила конструктивного завершения.
Используются Qt 4.1.0 MySQL 4.1 OS WindowsXP Professional SR2 БД таблица и поля типа varchar, создаются с инструкцией DEFAULT CHARACTER SET utf8 При запуске программы выполняю Код:
При соединении с БД Код:
Ввожу текстовое значение кирилическими символами (ни каких проблем с отображением символов нет) через поле ввода Код:
После добавления, только что введенное в ТБД значение отображается через QTableView. Вот тут и проблема - текст отображается в виде знаков вопроса. Идеи есть? :?: Название: Кирилица Отправлено: crocus от Январь 22, 2006, 15:26 Есть отличная идея!!
ВОСПОЛЬЗУЙСЯ ПОИСКОМ ПО ФОРУМУ!!! Название: Кирилица Отправлено: bob от Январь 22, 2006, 21:55 Цитата: "crocus" Есть отличная идея!! ВОСПОЛЬЗУЙСЯ ПОИСКОМ ПО ФОРУМУ!!! Во, блин, а то я сам не догадался. Уже. И не раз. Без толку, что только не пробовал. Название: Кирилица Отправлено: beginner от Январь 23, 2006, 03:17 Я конечно в Qt можно сказать новичек, но попробую предположить: Виджиты хранят текст в юникоде, соответственно в этом виде он наверное записывается в БД. Попробуй привести его к локали перед записью. (например, QString::FromLocal8Bit(...))
PS Научи, что нужно, что бы работать с MySQL или Firebird(особенно) используя Qt. Можно в личку, буду рад помощи. Название: Кирилица Отправлено: crocus от Январь 23, 2006, 03:44 Можно думать сколь угодно долго.
Смотря что ищешь, если просто рабочее решение ВОСПОЛЬЗУЙСЯ ПОИСКОМ ПО ФОРУМУ!!! Поиск по слову "кодировка" на первой позиции: http://prog.org.ru/forum/topic_2003_15.html Название: Кирилица Отправлено: bob от Январь 23, 2006, 11:32 Отличные новости в архиве PHP 5.0.5 (zip под Винду) есть библиотека
libmysql.dll и с ней проблемы русских символов отсутствуют. Кажется там добавили mysql_set_charset или что-то типа этого (из changelog PHP), если я правильно понял. crocus не в обиду, но это ты пишешь в ветке которую я сам начинал в свое время. Я сразу же воспользовался твоим советом, но ни чего не изменилось. :( Поэтому-то я и поднял эту тему повторно. Надеялся на то, что за прошедшее время хоть что ни будь изменилось. Название: Кирилица Отправлено: crocus от Январь 23, 2006, 12:20 Если так извини,
У меня MS Server 2003, версию MySql уже поменял на 5.0.18 нормально работает, причем как бросил libmysql.dll из PHP 5.0.5 в system32 так проблемы и исчезли, да библиотеку libmysql.a ( c ее помощью плагин собирается) собирал сам, может еще и в ней дело.============================================================== Building the MySQL driver for Qt4/MinGW ============================================================== Versions used: Qt4.0.0 / MinGW 3.4.2 / MySQL 4.1 1) Creating the MySQL client library. - - - - - - - - - - - - - - - - - - - Unfortunatly, the client libraries (libmysql.ddl and libmysql.lib) shipped with MySQL are compiled with the M$ compiler and are causing problems with try to link them with the MinGW compiler. Therefore, we first need to create a MinGW compatible library out of libmysql.dll. This can be done by taking the following steps: # cd c:\mysql\lib\opt (c:\mysql is where our MySQL is installed) # reimp -d libmysql.lib (reimp comes with MinGW utilities) # dlltool -k --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a Now we have the MinGW compatible library called libmysql.a И когда Qt собирал libmysql.a положил в /lib а затем подправил pro-файл: win32:!contains(LIBS, .*mysql.*):!contains(LIBS, .*mysqld.*) { LIBS *= -lmysql } Название: Кирилица Отправлено: BaltikS от Январь 23, 2006, 13:24 Цитата: "bob" Цитата: "crocus" Есть отличная идея!! ВОСПОЛЬЗУЙСЯ ПОИСКОМ ПО ФОРУМУ!!! Во, блин, а то я сам не догадался. Уже. И не раз. Без толку, что только не пробовал. Я делаю так в maine... qApp->setDefaultCodec(QTextCodec::codecForLocale()); И записывает в базу данных на русском и читает с неё...и ни каких fromLocal8Bit не нужно ! :D Название: Кирилица Отправлено: bob от Январь 29, 2006, 13:11 А ларчик просто открывался. Ошибка выделена красным цветом.
Вот то, что я выполнял:query.exec("SET NAMES utf8");[/i] и все кирилические символы отображались как знак вопроса. Вот то, что нужно было выполнить:query.exec("SET NAMES utf8;");[/i] Все, проблема ушла после того как был передан символ точка с запятой после инструкции "SET NAMES utf8". |