LINUX.ORG.RU

Работа с базой MySQL под X Window


0

0

ASP Linux 9, MySQL, QT 3.2, Компилятор g++ Ситуация : Есть база на MySQL кодовая таблица CP1251.

Немогу заставить отображать в таблице DataTable корректно русские буквы.

Если добавить запись на русском из MySQL в коммандном режиме то при просмотре select * from table1 запись отображается по Русски. При запуске приложения под X Window в таблице DataTable запись на русском отображается в другой кодировке (типа êúûăČĖÀ). При добавлении записи из X Window приложения в таблице появляется запись ??????? и при просмотре в команндном режиме MySQL выглядит также ??????.

Подскажите пожалуйста как правильно работать с базой данных в Русской кодировке ?


/etc/my.cnf

[mysqld]
default-character-set=cp1251

Delay ★★
()

mysqld] default-character-set=cp1251 Данная строка присутсвует.

Кажеться дело в том, что дело даже не в базе данных.

Потому что пытаюсь делать следующее :

Беру простейщий запрос, типа SELECT NAME FROM TABLE1 и вывожу его через qDebug( q.value(0).toString() ); Русские буквы при этом отображаются в терминале корректно (если они были занесены с помощью самого MySQL).

Есля пытаюсь записи из-за запроса добавить в QComboBox, то приходиться прибегать к функции tr(), иначе данные заносяться некорректно.

Если в базу добавляю запись напрямую target.exec("INSERT INTO TABLE1(NAME) VALUES('Пример');"); , то тогда запись в базе отображается корректно, а вот если пытаюсь сделать следующее target.exec("INSERT INTO TABLE1(NAME) VALUES('"+ lineEdit1->text()+"');"); , то тогда в базу в место русских символов заноситься "?" и даже если пытаюся вывести так, qDebug( lineEdit1->text() ); на терминале вижу знак "?" вместо русских символов.

Пытался продедать следующее : target.exec("INSERT INTO TABLE1(NAME) VALUES('"+ tr(lineEdit1->text())+"');"); , непомогает.

Может быть по этому поводу, подскажите что нибудь ?

olkv
() автор топика

Дело, конечно же, не в MySql, туда что положишь, то она и представит :) Не знаком с вашей средой разработки, но думаю, что у нее есть специфика хранения строковых данных (суда по вопросикам это скорее всего ISO-8859-1). Видимо, перед заносом в базу надо эту строку переконвертировать в cp1251. Я не уверен, это просто версия, но возможно стоит проверить....

anonymous
()

Есть простейшая программа на QT.

Окно, в окне 2 элемента QLineEdit и QPushButton.

При нажатии на кнопку вывожу в терминал текст из QLineEdit.

Стр.1. qDebug( QString::fromLocal8Bit( lineEdit1->text() ) ); Стр.2. qDebug( QString::fromAscii( lineEdit1->text() ) ); Стр.3. qDebug( QString::fromUtf8( lineEdit1->text() ) ); Стр.4. qDebug( "Текст" );

Так вот стр.1.-стр.3. выводят в терминал вместо русских букв "?", стр.4. отрабатывает правильно.

Может быть кто нибудь подскажет как добиться нужного результата ?

olkv
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.