Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: :::XD::: от Январь 26, 2007, 03:21 Знаю знаю, писали уже многие об этой проблемы, перепробывал все.
Подскажите что не так. Таблица и колонка в MySQL в utf8 вот код Код:
1) При включенном кодеке (вверху) всегда добавляет в таблицу "???" 2) Если беру значение из текстбокса - всегда в таблице "???" 3) Выберая из таблице получаю что-то вроде: uaua (только со значками над буквами) Заранее спасибо! Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: crocus от Январь 26, 2007, 06:00 НЕ
Цитировать QSqlQuery q("SET NAMES utf8;"); А Цитировать ("SET NAMES utf8_general_ci;"); Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: Mikhail от Январь 26, 2007, 08:38 Откуда уверенность что MySql работает в кодировке utf8?
Скорее всего ты не прописал для MySql кодировку utf8 в файле my.ini: # The default character set that will be used when a new schema or table is # created and no character set is defined default-character-set=utf8 поэтому и получаешь вопросы. А использование QSqlQuery q("SET NAMES utf8;"); верное. Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: _govorilka от Январь 27, 2007, 06:51 Вмеcто utf8, лучще использовать Utf8 (utf8_general_ci).
Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: :::XD::: от Январь 27, 2007, 11:07 спасибо всем за ответы!!!
To _govorilka: utf8 и больше места ест, и насколько я помню по нему поиск делается помедленней To Mikhail: в my.ini проверил, есть такая строка. To crocus: ("SET NAMES utf8_general_ci;"); - пишет неверно указана кодировка Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: _govorilka от Январь 31, 2007, 06:16 Цитата: ":::XD:::" спасибо всем за ответы!!! To _govorilka: utf8 и больше места ест, и насколько я помню по нему поиск делается помедленней Только теоритически!!! Вернее на нормальной машине разницы не замечаешь. Строки действительно занимают больше места почти в два раза... Но тот факт, что при Utf8 не нужно бесконечно переходить из одной кодировки в другую сглаживает все недостатки. Кстати ты знаешь, что QString хранит все данные в Unicode... И еще, Utf8 можно использовать только в настройках клиента, а сами данные хранить в какой угодно кодировке. Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: crocus от Январь 31, 2007, 07:03 Ну у меня при
Цитировать QSqlQuery q("SET NAMES utf8;"); русские символы квадратами рисует и независимо что в my.ini прописано -latin1 или ср1251, и еще кодеки вроде надо в main прописывать типа так: Код: int main(int argc, char *argv[]) Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: _govorilka от Январь 31, 2007, 12:49 Цитата: "crocus" Ну у меня при Цитировать QSqlQuery q("SET NAMES utf8;"); русские символы квадратами рисует и независимо что в my.ini прописано -latin1 или ср1251, и еще кодеки вроде надо в main прописывать типа так: Код: int main(int argc, char *argv[]) Вот это у меня в mysql.ini написано и все работает: [mysql] default-character-set=utf8 character-sets-dir="../charsets/" Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: :::XD::: от Январь 31, 2007, 14:58 все пробовал, и bind и просто строкой, высылаю архивчик. очень расчитываю на вашу помощь.
http://www.olegrom.com/QtSQL.zip Заранее огромное спасибо! Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: _govorilka от Февраль 07, 2007, 10:19 Цитата: ":::XD:::" все пробовал, и bind и просто строкой, высылаю архивчик. очень расчитываю на вашу помощь. http://www.olegrom.com/QtSQL.zip Заранее огромное спасибо! Можно, вопрос. А почему тебе не попробывать вообще без QtSQL работать. В дистрибутиве Mysql есть все необходимые *.h и нормальная, оптимизированная Lib и Dll. Справка по функциям API есть там же в дистрибутиве. Могу и свой исходник скинуть, если надо, конечно. Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: Admin от Февраль 07, 2007, 11:59 писать на mysql либе достаточно затруднительно
но есть кучка враперов под это дело Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: _govorilka от Февраль 07, 2007, 12:39 Цитата: "Admin" писать на mysql либе достаточно затруднительно но есть кучка враперов под это дело По какой причине трудно?.. Я пользуюсь mysql.lib уже 2года, и при этом у меня нет проблем с кодировками, подключениями и т.д. Название: MySQL 5 + Qt 4.2 = нет русской кодировки Отправлено: Mikhail от Февраль 07, 2007, 17:25 :::XD:::
все проблемы в файле драйвера qsql_mysql.cpp в следующем коде: #ifndef QT_NO_TEXTCODEC static QTextCodec* codec(MYSQL* mysql) { #if MYSQL_VERSION_ID >= 32321 QTextCodec* heuristicCodec = QTextCodec::codecForName(mysql_character_set_name(mysql)); if (heuristicCodec) return heuristicCodec; #endif return QTextCodec::codecForLocale(); } #endif // QT_NO_TEXTCODEC скорее всего он возвращает latin1 отсюда и вопросы вместо русских букв. Для решения проблемы необходимо определить MYSQL_VERSION_ID. либо просто заставить функцию возвращать что то типа QTextCodec::codecForName("utf8"); |