Russian Qt Forum
Ноябрь 24, 2024, 10:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: MySQL проблемы с кодировкой  (Прочитано 4504 раз)
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 ставил из репозитория и ничего не конфигурировал и не настраивал.
Записан
crossly
Гость
« Ответ #1 : Май 19, 2010, 08:49 »

а если обойтись только
Код:
.arg(m_Le->text()));
??
Записан
QCasper
Гость
« Ответ #2 : Май 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()));

Результат:
НепонимающийНепонимающийНепонимающийНепонимающийНепонимающийНепонимающийНепонимающийНепонимающийНепонимающийНепонимающий??
Записан
crossly
Гость
« Ответ #3 : Май 19, 2010, 09:32 »

а результат где смотрим??
Записан
trenkinan
Гость
« Ответ #4 : Май 19, 2010, 09:36 »

попробуй использовать windows-1251;  у меня было что-то похожее с utf-8
Записан
QCasper
Гость
« Ответ #5 : Май 19, 2010, 10:43 »

а результат где смотрим??
Результат смотрим в консоли - обычным выборочным запросом.
Записан
QCasper
Гость
« Ответ #6 : Май 19, 2010, 10:46 »

а результат где смотрим??
crossly, перед выбором в консоли тоже сделал set names utf8; - и стало все окей. Не разберусь теперь в матчасти, как так выходит?
Записан
crossly
Гость
« Ответ #7 : Май 19, 2010, 13:20 »

а ты посмотри какая кодировка в конфигурации сервера установлена...
Записан
QCasper
Гость
« Ответ #8 : Май 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/
Записан
crossly
Гость
« Ответ #9 : Май 19, 2010, 13:51 »

ну вот.... latin1 понятия не имеет о существовании кириллицы... Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 21.