Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

ASP Linux 9, MySQL, QT 3.2, Компилятор g++

Ситуация :

Есть база на MySQL кодовая таблица CP1251.

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

русские буквы.

Если добавить запись на русском из MySQL в коммандном режиме

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

При добавлении записи из X Window приложения в таблице появляется запись ??????? и при просмотре в команндном режиме MySQL выглядит также ??????.

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

Опубликовано

Попробуй QString::fromLocal8Bit("тест");

Как в MySQL не знаю, но в PostgreSQL есть команда recode, которая транслирует запрашиваемые строки в нужную кодировку, - возможно в MySql также есть что-либо подобное.

Еще как вариант могу предложить перекодировать строки на лету(если база не дает) в нужную кодировку, - в Qt есть возможность получить доступ к строкам перед записью и перед отображением.

Успехов

Опубликовано

Мне кажеться дело даже не в MySQL.

Написал простейшую программа на 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. отрабатывает правильно.

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

(P.s. qDebug( QString::fromLocal8Bit("тест")); так же выводит знаки "?" вместо русских букв.)

Опубликовано

Надо так:

Стр.1. qDebug( lineEdit1->text().local8Bit() );

Стр.2. qDebug( lineEdit1->text().local8Bit() );

Стр.3. qDebug( lineEdit1->text().local8Bit() );

Стр.4. printf("Текст");

Но если у тебя и четвертая строка не видна, то у тебя локаль не настроена

Опубликовано

Большое спасобо, все заработало.

Но ты говорил, что есть возможность обрабатывать записи на лету перед отображением. Нельзя ли по подробнее. В частности есть вопрос по объекту QDataTable. Как заставить систему перекодировать записи перед отображением на экран, учитывая, что объект dataTable1 был создан с помощью QT Designer, а не вручную ? (Я это к чему, в QDataTeble есть событие

paintField(...) может быть его нужно как то использовать, но у меня с первого захода не получилось.)

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...