Russian Qt Forum

Qt => Базы данных => Тема начата: QCasper от Май 18, 2010, 21:37



Название: MySQL проблемы с кодировкой
Отправлено: QCasper от Май 18, 2010, 21:37
Знаю, неоднократно обсуждалось, но у меня ничего не получается.

Код создания базы с таблицей:
Код:
mysql> create database test
    -> default character set utf8
    -> default collate utf8_general_ci;

create table tbl(a text);

Код заполнения таблицы:
Код:
QTextCodec *c = QTextCodec::codecForName("UTF-8");
db().exec("SET NAMES 'utf8'");
db().exec(QString("INSERT INTO tbl VALUES('%1')")
.arg(c->fromUnicode(m_Le->text()).constData()));

Результат:
й�?�?кен�?�?з�?�?�?вап�?олджя�?сми�?�?б�?

Странно, что некоторые символы в порядке, а некоторые нет.

Linux Ubuntu 10.04, Qt 4.6.
MySQL ставил из репозитория и ничего не конфигурировал и не настраивал.


Название: Re: MySQL проблемы с кодировкой
Отправлено: crossly от Май 19, 2010, 08:49
а если обойтись только
Код:
.arg(m_Le->text()));
??


Название: Re: MySQL проблемы с кодировкой
Отправлено: QCasper от Май 19, 2010, 09:31
а если обойтись только
Код:
.arg(m_Le->text()));
??
То есть вот так:
Код:
db().exec("SET NAMES 'utf8'");		
db().exec(QString("INSERT INTO tbl VALUES('%1')").arg(m_Le->text()));

Результат:
????????????????????????????????


Название: Re: MySQL проблемы с кодировкой
Отправлено: crossly от Май 19, 2010, 09:32
а результат где смотрим??


Название: Re: MySQL проблемы с кодировкой
Отправлено: trenkinan от Май 19, 2010, 09:36
попробуй использовать windows-1251;  у меня было что-то похожее с utf-8


Название: Re: MySQL проблемы с кодировкой
Отправлено: QCasper от Май 19, 2010, 10:43
а результат где смотрим??
Результат смотрим в консоли - обычным выборочным запросом.


Название: Re: MySQL проблемы с кодировкой
Отправлено: QCasper от Май 19, 2010, 10:46
а результат где смотрим??
crossly, перед выбором в консоли тоже сделал set names utf8; - и стало все окей. Не разберусь теперь в матчасти, как так выходит?


Название: Re: MySQL проблемы с кодировкой
Отправлено: crossly от Май 19, 2010, 13:20
а ты посмотри какая кодировка в конфигурации сервера установлена...


Название: Re: MySQL проблемы с кодировкой
Отправлено: QCasper от Май 19, 2010, 13:22
а ты посмотри какая кодировка в конфигурации сервера установлена...
mysql -u root -p -e "show variables" | grep char
Enter password:
character_set_client   latin1
character_set_connection   latin1
character_set_database   latin1
character_set_filesystem   binary
character_set_results   latin1
character_set_server   latin1
character_set_system   utf8
character_sets_dir   /usr/share/mysql/charsets/


Название: Re: MySQL проблемы с кодировкой
Отправлено: crossly от Май 19, 2010, 13:51
ну вот.... latin1 понятия не имеет о существовании кириллицы... :)