Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Qt и Юникод
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
potkin
Надо потдержку "мультиязычности".
Подскажите как сделать так, чтоб QT понимал все Кодировки в Гуи и в БД также.

Пишу в mail.cpp
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Login log;
    log.show();

    QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));   //Кирилица

    return a.exec();
}


При сохранениее в БД выдаёт ошибку:
Цитата
The database reported an error: Incorrect string value: '\xD0\xBF\xD0\xBF\xD0\xBF' for column 'lastname' at row 1 QMYSQL3: Unable to execute statement


Цитата
Кодировки, поддерживаемые в Qt 4.3:
Apple Roman
Big5
Big5-HKSCS
EUC-JP
EUC-KR
GB18030-0
IBM 850
IBM 866
IBM 874
ISO 2022-JP
ISO 8859-1 — ISO 8859-10
ISO 8859-13 — ISO 8859-16
Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml
JIS X 0201
JIS X 0208
KOI8-R
KOI8-U
MuleLao-1
ROMAN8
Shift-JIS
TIS-620
TSCII
UTF-8
UTF-16
UTF-16BE
UTF-16LE
Windows-1250 — Windows-1258
WINSAMI2


Мне надо, чтоб потдерживались все Кодировки, реально ???
molchanoviv
А чем юникод не устраивает?
Litkevich Yuriy
Цитата(potkin @ 20.8.2010, 16:20) *
При сохранениее в БД выдаёт ошибку:
при сохранении чего?
potkin
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Login log;
    log.show();

    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));   //Юникод

    return a.exec();
}


Получаю "Иероглифы".

Litkevich Yuriy
Цитата
при сохранении чего?


Показать:
model = new QSqlTableModel();
    model->setTable("users");
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
   if (model->select())
    {

        model->setHeaderData(0, Qt::Horizontal, tr("ID"));
        model->setHeaderData(1, Qt::Horizontal, tr("First name ??\????ueeeruuuu"));
        model->setHeaderData(2, Qt::Horizontal, tr("Last name"));
        model->setHeaderData(3, Qt::Horizontal, tr("Post"));

        ui->tVUsers->setModel(model);
        ui->tVUsers->resizeColumnsToContents();
    }
    else
    {
        model->database().rollback();
        QMessageBox::warning(this, tr("Cached Table"),
                            tr("The database reported an error: %1")
                            .arg(model->lastError().text()));
    }

Сохранить:
    model->database().transaction();
    if (model->submitAll()) {
        model->database().commit();
    } else {
        model->database().rollback();
        QMessageBox::warning(this, tr("Cached Table"),
                             tr("The database reported an error: %1")
                             .arg(model->lastError().text()));
    }


Сохраняло только ланиницей.

Но я разобрался, проблема была в МуСкуле. При создании таблиц добавил:
Цитата
ENGINE=MyISAM CHARACTER SET=utf8


А вот, если я хочу разместить Лейбел на форме, с текстом на Кыргиском, Азерском, ... языке. То получаю "квадратики".
Интерестно, как исправить ???
Litkevich Yuriy
Цитата(potkin @ 20.8.2010, 20:03) *
с текстом на Кыргиском, Азерском, ... языке.
лучший путь - написать по английски, а потом сделать перевод.
худший - использовать исходник в UTF-8, далее строковые литералы оборачивать в QObject::trUtf8()

Ещё более худший:
все исходники в кодировке X
в функции main
QTextCodec::setCodecForTr(QTextCodec::codecForName("X"));
далее строковые литералы оборачивать в QObject::tr()
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.