Гость Опубликовано 19 августа, 2003 Жалоба Поделиться Опубликовано 19 августа, 2003 ASP Linux 9, MySQL, QT 3.2, Компилятор g++ Ситуация : Есть база на MySQL кодовая таблица CP1251. Немогу заставить отображаться в таблице DataTable корректно русские буквы. Если добавить запись на русском из MySQL в коммандном режиме то при просмотре select * from table1 запись отображается по Русски. При запуске приложения под X Window в таблице DataTable запись на русском отображается в другой кодировке (типа êúûăČĖÀ). При добавлении записи из X Window приложения в таблице появляется запись ??????? и при просмотре в команндном режиме MySQL выглядит также ??????. Подскажите пожалуйста как правильно работать с базой данных в Русской кодировке ? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 20 августа, 2003 Жалоба Поделиться Опубликовано 20 августа, 2003 Попробуй QString::fromLocal8Bit("тест"); Как в MySQL не знаю, но в PostgreSQL есть команда recode, которая транслирует запрашиваемые строки в нужную кодировку, - возможно в MySql также есть что-либо подобное. Еще как вариант могу предложить перекодировать строки на лету(если база не дает) в нужную кодировку, - в Qt есть возможность получить доступ к строкам перед записью и перед отображением. Успехов Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 августа, 2003 Жалоба Поделиться Опубликовано 21 августа, 2003 Мне кажеться дело даже не в 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("тест")); так же выводит знаки "?" вместо русских букв.) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 августа, 2003 Жалоба Поделиться Опубликовано 21 августа, 2003 Надо так: Стр.1. qDebug( lineEdit1->text().local8Bit() ); Стр.2. qDebug( lineEdit1->text().local8Bit() ); Стр.3. qDebug( lineEdit1->text().local8Bit() ); Стр.4. printf("Текст"); Но если у тебя и четвертая строка не видна, то у тебя локаль не настроена Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 26 августа, 2003 Жалоба Поделиться Опубликовано 26 августа, 2003 Большое спасобо, все заработало. Но ты говорил, что есть возможность обрабатывать записи на лету перед отображением. Нельзя ли по подробнее. В частности есть вопрос по объекту QDataTable. Как заставить систему перекодировать записи перед отображением на экран, учитывая, что объект dataTable1 был создан с помощью QT Designer, а не вручную ? (Я это к чему, в QDataTeble есть событие paintField(...) может быть его нужно как то использовать, но у меня с первого захода не получилось.) Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 28 августа, 2003 Жалоба Поделиться Опубликовано 28 августа, 2003 Давай по мылу, а то ломает по вебу писать iqsoft@cg.ukrtel.net Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.