crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Qt и Юникод, Иероглифы :(
potkin
  опции профиля:
сообщение 20.8.2010, 12:20
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


Надо потдержку "мультиязычности".
Подскажите как сделать так, чтоб 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
  опции профиля:
сообщение 20.8.2010, 12:58
Сообщение #2


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


А чем юникод не устраивает?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.8.2010, 14:26
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(potkin @ 20.8.2010, 16:20) *
При сохранениее в БД выдаёт ошибку:
при сохранении чего?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
potkin
  опции профиля:
сообщение 20.8.2010, 16:03
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 18.6.2010
Пользователь №: 1819

Спасибо сказали: 0 раз(а)




Репутация:   0  


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
  опции профиля:
сообщение 21.8.2010, 8:00
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9668
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


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

Ещё более худший:
все исходники в кодировке X
в функции main
QTextCodec::setCodecForTr(QTextCodec::codecForName("X"));
далее строковые литералы оборачивать в QObject::tr()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.10.2021, 7:30