Название: Help кодировка в MySQL Отправлено: Slavan от Август 10, 2005, 11:51 Немогу понять.
(MSVC++2003,QT3.3.3,MySQL4.1.13 на удалённой тачке FreeBSD5.4) Почитал архив форума нашёл что "????" лечится QTextCodec *codec=QTextCodec::codecForName("utf8"); QTextCodec::setCodecForCStrings(codec); но самое интересное что у меня не выходит :( . Мож я что-то не так делаю...... получаю в строку QCString и отправляю в базу. там у меня ???? читаю с базы тоже самое Даже то что правильно внеслось с консоли. С консоли всё ок..... Пересмотрел my.cnf там стоит сp1251 на utf8 и utf8 тот же результат...... второй день голову ломаю :( помогите плз..... Заранее благодарен. Название: Help кодировка в MySQL Отправлено: jindos от Август 10, 2005, 12:22 Попробуй для строки сделать такую вот штуку:
QString str = ; //твоя строка QTextCodec *t; t = QTextCodec::codecForName("CP-1251",0); if (t) QString s = QString(t->toUnicode(str)); s - новая преобразованная... З.Ы. Да еще: не для всех шрифтов русский поддерживается, так что попробуй вот с этим шрифтом - QFont formFont("smallsmooth", 11); Название: всёравно не получается.. :( Отправлено: Slavan от Август 10, 2005, 12:43 Делаю
QString s; QTextCodec *codec=QTextCodec::codecForName("CP-1251",0); QTextCodec::setCodecForCStrings(codec); // установил кодек s=lineEdit1->text(); QString ss=QString(codec->toUnicode(s)); db->exec("insert into tablica_my(name) values('"+ss+"');"); добавляет '??????' Но есть продвижение букву 'ч' стало нормально постить Название: Help кодировка в MySQL Отправлено: jindos от Август 10, 2005, 13:06 Пробовал шрифт для lineEdit1 на ("smallsmooth", 11) устанавливать?
Может тебе еще такая штука поможет: ss = QString::fromLocal8Bit(s)... И напиши, какие были изменения при применении этих способов... Название: :( Отправлено: Slavan от Август 10, 2005, 13:29 Не не помогло.
Может базу я настроил не правильно. Какие параметры чарсетов для базы дожны быть???? везде utf8??????? Может я действительно где-то обшибся.... Название: Help кодировка в MySQL Отправлено: Admin от Август 10, 2005, 13:29 возможно причина не в QT
насколько я помню у MYSQL 4.1 появилась такая фича клиент сообщает пользователю какой кодировкой он будет общатся с ним читай тут http://phpclub.ru/talk/showthread.php?s=&threadid=58477&rand=92 вот вырезка Цитировать Если у вас MySQL 4.1 и любые проблемы с русскими буквами, то попробуйте в начале вашего скрипта, но после соединения выполнить SQL-запрос -------------------------------------------------------------------------------- SET NAMES кодировка; -------------------------------------------------------------------------------- Где кодировка, та кодировка, в которой у вас данные (или в которой вы хотите их видеть). Например для русской виндовой кодировки (windows-1251) это будет utf8, для KOI8-R - koi8r, для UTF-8 - utf8 и так далее. АЛЬТЕРНАТИВНЫЙ ВАРИАНТ # The MySQL server [mysqld] init-connect="SET NAMES utf8" Если это вам поможет, то разобраться, что же происходит поможет http://dev.mysql.com/doc/mysql/en/C...connection.html, а более подробно о том, что из себя представляет поддержка кодировок в MySQL 4.1 поможет узнать http://dev.mysql.com/doc/mysql/en/Charset.html ВАЖНОЕ ЗАМЕЧАНИЕ! функция mysqli_client_encoding() и сотоварищи, отображает кодировку клиента на момент соединения и не меняет возвращаемое значение в процессе работы. Поэтому не стоит кричать, что кодировка не меняется. Просто используйте SET NAMES кодировка и смотрите результат работы скрипта. Если у вас получается каша вместо русских букв (что является следствием того, что база думает, что данные у нее хранятся не в той кодировке, например, latin1), то опять же обратитесь к мануалу, а конкретно разделу про конвертирование кодировок при переходе на 4.1 Название: то ADMIN Отправлено: Slavan от Август 10, 2005, 14:18 Огромное преогромное спасибо.
Помогло и вылечило.... Пофиксил MySql. Добавил код в прогу свою. Всё заработало только с конструкцией... QTextCodec *codec=QTextCodec::codecForName("CP-1251",0); QTextCodec::setCodecForCStrings(codec); А по умолчанию в Qt кодировка идёт utf8??? Название: Help кодировка в MySQL Отправлено: Admin от Август 10, 2005, 14:54 раскажи что тебе конкретно помогло
а uft-8 щас популярная кодировка правда она помоему 2 байта жрет на символ :) все ее и мочат - на koi8-r или utf8 Название: SNKS Отправлено: Slavan от Август 10, 2005, 15:21 Я короче почитал там доки. По ссілам и ещё там коечто....
И короче говоря пришёл к такому выводу, что проще после установки коннекта лучше выполнить запрос. Плюс у меня глюки с настройками на сервер. Короче пофиксил там посмотрел работу с консоли. понравилось решил попробовать. Получилось конструкцию сейчас с кодеком убрал и таблу задал как utf8 заодно и всю базу. а инсертю теперь просто... получаю "QString s" в запрос его пихаю s.utf8() пашет как дети в школу пошли. Хотя с другой стороны, если посмотреть так то, что в секвеле 4.1 и выше сделали такую штуку. Так это правильно. Удобнее. Получается клиент может работать с любой кодировой, только бы серверу сказать об этом. Я раньше с MySQL не работал, только с ораклёй 8-й. Так в отличии там кодировка жёстко прописывалась..... Как 9ка 10-ка и т.д. не знаю. Ещё раз спасибо буду дальше изучать доки по секвелю. Мне ещё ф-ции и процедуры нуно научится ваярить. Название: Help кодировка в MySQL Отправлено: Admin от Август 10, 2005, 15:34 понятно, буду знать на будущее
в 9 Oracle тоже кодировка ручками задается |