Russian Qt Forum

Qt => Базы данных => Тема начата: Druxa от Июнь 09, 2005, 13:07



Название: В 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" );
  QCString temp =  query.value(0).toCString();
  QString name = codec->toUnicode( temp );
  aTable->setText( i, 0, name ); // без всяких tr()


Название: В 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" );
  QCString temp =  query.value(0).toCString();
  QString name = codec->toUnicode( temp );
  aTable->setText( i, 0, name ); // без всяких tr()

Так я пробовал, всё успешно компилируется, когда запускаю программу приложение не запускается, выдаётся ошибка "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, то в консоли будут закарючки, а в программе всё нормально. Всем спасибо за ответы!!!