Название: MySQL, QT3, кириллица. Перепробовал все Отправлено: mokynis от Октябрь 20, 2008, 09:11 Исходные данные: Linux (Ubuntu 7.10), локаль utf8, KDE 3, MySQL 5.0.45, Qt 3.3.7
Создал локальную базу, в ней таблица с текстовым полем. В shell или в Query Brouser кириллица работает нормально: можно записать, можно просмотреть. Имеется программа в Qt с QDataTable, в которую выводится таблица. Вместо кириллицы-что-то типа "билеÑ". Пытаюсь сделать запись из QLineEdit-в таблицу записываются вопросики. Пересмотрел все, что мог в инете. пробовал: 1) менять my.cnt [client] default-character-set=utf8 [mysqld] default-character-set=utf8 [mysql] default-character-set = utf8 в текст программы после подключения к базе пробовал написать запрос QSqlQuery query1; 2)query1.exec("set character set utf8;"); или 3)query1.exec("SET NAMES utf8;"); толку никакого-только в 3 случае содержимое QLineEdit-поля после команды UPDATE отображается в таблице кракозяблами, а во 2-м случае-вопросиками. Запрос SHOW VARIABLES LIKE '%char%'; выдает 'character_set_client', 'utf8' 'character_set_connection', 'utf8' 'character_set_database', 'latin1' 'character_set_filesystem', 'binary' 'character_set_results', 'utf8' 'character_set_server', 'latin1' 'character_set_system', 'utf8' 'character_sets_dir', '/usr/share/mysql/charsets/' а между прочим, в , //usr/share/mysql/charsets/ нет utf8. 4)Пробовал и у таблицы, и у текстового поля менять character set-без толку, в запрос вставлять не содержимое Edit-поля, а tr(Edit->text()) - то же самое 5)если пишу не из Edit-поля, а пишу типа "UPDATE pinigai SET nam='"+QString::fromLocal8Bit("булка")+"' WHERE id=7;" опять вопросики. 6)если сначала выполняю запрос таким образом query1.exec(query_str.utf8()) то по крайней мере в Query Brouser кириллица отображается правильно. А в Qt-программе все равно ее нет. 7)И еще что заметил: если после запуска программы пытаюсь редактировать имеющуюся запись и первую запись делаю латинницей, запись проходит удачно и все следующие тоже (только не по-русски). А если первую редакцию пытаюсь сделать кириллицей-не пишет, пока хоть что-нибудь не впишу латинницей. Это действует, только если изменен my.cnf (см. п. 1) Название: Re: MySQL, QT3, кириллица. Перепробовал все Отправлено: crossly от Октябрь 20, 2008, 11:28 QTextCodec.... ???
Название: Re: MySQL, QT3, кириллица. Перепробовал все Отправлено: mokynis от Октябрь 20, 2008, 13:33 УРА!!
Я, похоже, перемудрил. Изменил по совету crossly свой main.cpp (приведу полный текст-вдруг кому пригодится?) #include <qapplication.h> #include <qtextcodec.h> #include "baseform.h" int main( int argc, char ** argv ) { QApplication a( argc, argv ); QTextCodec *codec; codec=QTextCodec::codecForName("utf8"); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForTr(codec); baseForm w; w.show(); a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) ); return a.exec(); } И все! Не нужно править my.cnf, не нужны дополнительные запросы-все сразу заработало, как хотелось. Тема закрыта. |