crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QT+MYSQL+WINDOWS
Введите ваше имя
Подтвердите код

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

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
SVA Дата 7.6.2008, 15:40
  С переходом на версию QT 4.4.0 все проблемы с рускими БД и их отображением отпали. :D
SVA Дата 28.5.2008, 11:32
 
Цитата(Litkevich Yuriy @ 27.5.2008, 20:33) *
у тебя получаются каракули в выпадающем списке, когда текст в базе на русском, я правильно понял?

Да. БД создавал в phpMyAdmin и где только возможно указывал windows-кодировку.
Litkevich Yuriy Дата 27.5.2008, 19:33
  у тебя получаются каракули в выпадающем списке, когда текст в базе на русском, я правильно понял?
SVA Дата 27.5.2008, 19:24
  Методом "научного тыка" нашёл несовсем понятное решение данной проблемы.
Заключается оно в том, что перед добавлением строки в ComboBox, необходимо сделать следующее преоброзование:
Цитата
QString name = query.value(1).toString().toLatin1();
Litkevich Yuriy Дата 26.5.2008, 20:25
 
Цитата(ViGOur @ 27.5.2008, 0:11) *
правильную кодировку

а точнее UTF-8
ViGOur Дата 26.5.2008, 20:11
  Я делал по другому, у меня БД в UTF-8 была, после получения данных из нее, я их преобразовывал к Windows-1251.
В твоем случае, по всей видимости нужно при получении данных переключать кодировку на Latin1, после чего, если тебе нужно Windows-1251, переводить полученные данные в нее...

Цитата(SVA @ 26.5.2008, 21:01) *
Следует сказать, что русские буквы на других виджетах, созданных при помощи Designer-а, отображаются правильно.
Просто QDesigner изнгачально использует правильную кодировку. :)
SVA Дата 26.5.2008, 20:01
  Пробовал так:
query.exec("SET CHARSET CP1251");

, но эффект тотже.
Следует сказать, что русские буквы на других виджетах, созданных при помощи Designer-а, отображаются правильно.
Litkevich Yuriy Дата 26.5.2008, 17:55
 
Цитата(SVA @ 26.5.2008, 21:47) *
query.exec("SET NAMES CP1251");

а этот запрос проходит?
попробуй сделать для БД, но параметр может отличаться:
db.setConnectOptions("CHARSET=WIN1251");
SVA Дата 26.5.2008, 17:47
  Пробую написать программу в WindowsXP SP3 с применением QT 4.3.0.
Программа подключается к серверу MySQL на котором созданна БД в кодировке Windows-1251 :
#include <QApplication>
#include <QResource>
#include <QLocale>
#include <QTextCodec>
#include "connection.h"
#include "mwnd.h"


int main(int argc, char *argv[]) {

    Q_INIT_RESOURCE(application);
    QApplication app(argc, argv);
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
    if (!createConnection())
        return 1;
    Mwnd *window = new Mwnd;
    window->show();
    return app.exec();
}

И по полученным данным строит свой GUI.
#include <QtGui>
#include <QSqlQuery>
#include "mwnd.h"

Mwnd::Mwnd() : QMainWindow() {
    setupUi(this);
    QSqlQuery query;
    query.exec("SET NAMES CP1251");
    query.exec("SELECT id, name FROM municipalities ORDER BY name ASC");
    while (query.next()) {
        QString name = query.value(1).toString();
        comboBox->addItem(name);
    }
}

Но беда в том, что строки выводимые в ComboBox-е отображаются символами Latin1, а не Windows-1251.
Что ещё необходимо настроить в QT для правильного отображения русских символов в формируемом виджете?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 4:50