Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Druxa от Июнь 09, 2005, 13:07 Есть таблица Qtable, в неё запичваются данные из БД MySQL, в Linux-e всё отлично! А в Windows-е пишутся закарючки. Кодек подключил, все кодировки перебрал.
Что делал: QTextCodec *rusCodec = QTextCodec::codecForName("KOI8-R"); QTextCodec::setCodecForTr(rusCodec); ... QString name = query.value(0).toString(); ... aTable->setText(i, 0, tr(name)); Пробовал QTextCodec::setCodecForCStrings(rusCodec), не помогает. Подскажи те пожалуйста решение проблемы, только не ссылайтесь пожалуйста на документацию. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: BaltikS от Июнь 09, 2005, 13:26 Как сделал я, не слишком парясь...
Table->setText(0,0,QString::fromLocal8Bit(mycur->value("field").toString().local8Bit().data())); И самое удивительное...что это работает :D Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Druxa от Июнь 09, 2005, 14:00 Я написал:
aTable->setText(i,0,QString::fromLocal8Bit(name.local8Bit().data())); Закарючки не убрались. Можно подробрей текст программы? Какой при этом должен стоять QTextCodec? Если можно текст небьльшой программы. Очень нужно. Спасибо. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: MaxWin от Июнь 09, 2005, 16:39 Example: examples/qwerty/qwerty.cpp
Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Druxa от Июнь 09, 2005, 16:54 Цитата: "MaxWin" Example: examples/qwerty/qwerty.cpp Я 3-й день изучаю Qt, если можно приведите маленький понятный пример в форме. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: MaxWin от Июнь 09, 2005, 17:28 Это маленький и понятный пример.
Не ленитесь. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Druxa от Июнь 09, 2005, 17:38 Цитата: "MaxWin" Это маленький и понятный пример. Не ленитесь. Мне завтра сдавать курсовую! Всё сделал, только в таблице из русского текста выходят закарючки, всё перепробовал. Пример посмотрел. Не выходит из MySQL-я в QTable русский буквы, хоть вешайся. Если не трудно приведите всё таки пример как из MySQL-я QString name = query.value(0).toString(); записать этот несчастный name в QTable на Русском! Пожалуйста. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Sergeich от Июнь 09, 2005, 19:37 Как я понял ты запихал в базу русские строки с коевым кодеком.
Можешь попробовать их вынуть так: Код: QTextCodec* codec = QTextCodec::codecForName( "KOI8-R" ); Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Sergeich от Июнь 09, 2005, 19:45 Вообще-то, когда у меня была аналогичная проблема, я запихнул
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R")); перед созданием QApplication, все прекрасно работает и под виндой и под линухом. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Druxa от Июнь 09, 2005, 20:10 Цитата: "Sergeich" Как я понял ты запихал в базу русские строки с коевым кодеком. Можешь попробовать их вынуть так: Код: QTextCodec* codec = QTextCodec::codecForName( "KOI8-R" ); Так я пробовал, всё успешно компилируется, когда запускаю программу приложение не запускается, выдаётся ошибка "ams.exe - обнаружена ошибка. Приложение будет закрыто....". Может надо библиотеки какие особые подключить? Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Druxa от Июнь 09, 2005, 20:13 Цитата: "Sergeich" Вообще-то, когда у меня была аналогичная проблема, я запихнул QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R")); перед созданием QApplication, все прекрасно работает и под виндой и под линухом. Так то-же пробовал, не работает, опять закарючки, снова :( А как же мне не создавать объект QApplication? Без него никуда. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Sergeich от Июнь 09, 2005, 20:19 1. Я писал что надо вызвать setCodec.... перед созданием QApplication, а не то что не надо создавать QApplication.
2. А валиться скорей всего из-за того что QTextCodec::codecForName( "KOI8-R" ) возвращает 0. Посмотри в отладчике. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Druxa от Июнь 09, 2005, 20:26 Цитата: "Sergeich" 1. Я писал что надо вызвать setCodec.... перед созданием QApplication, а не то что не надо создавать QApplication. 2. А валиться скорей всего из-за того что QTextCodec::codecForName( "KOI8-R" ) возвращает 0. Посмотри в отладчике. Не валится не из-за QTextCodec::codecForName("KOI8-R"), а с отладчиком у меня пробема к сожалению, надо VC переустанавливать. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Druxa от Июнь 09, 2005, 20:47 Цитата: "Sergeich" Вообще-то, когда у меня была аналогичная проблема, я запихнул QTextCodec::setCodecForCStrings(QTextCodec::codecForName("KOI8-R")); перед созданием QApplication, все прекрасно работает и под виндой и под линухом. Попробовал ставить перед QApplication, не работает. У меня версия Qt 3.3.3, может в ней дело? Самое интересное, что в Линухе работает!!! Причём без всяких toUnicode. Просто QTextCodec* codec = QTextCodec::codecForName("KOI8-R"); QTextCodec::setCodecForTr(codec); и всё. А в Windows перебрал все кодировки ничего не работает, когда делаю через toUnicod, приложение не запускается, при том компилируется нормально!!! Что делать? Подскажите? Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Druxa от Июнь 09, 2005, 20:55 Приложение валится из-за QString name = codec->toUnicode( temp );
Если эту строку убрать запускается. Название: В QTable в Windows-е при получении данных из MySQL пишутся. Отправлено: Sergeich от Июнь 09, 2005, 21:50 Ну дык а я про что! Значит codec == 0. Ты в отладчике смотрел? У тя конфигурация какая? ( WinVer + Compiler + Qt )? И вообще если срочно выйди в асю.
Название: Druxa Отправлено: Druxa от Июнь 15, 2005, 01:05 Вопрос решил давно. Я заносил данные в MySQL через консоль mysql-я на русском, получал в программе закарючки. Если заносить через программу в кодировке K0I8-R, то в консоли будут закарючки, а в программе всё нормально. Всем спасибо за ответы!!!
|