crossplatform.ru

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


  Ответ в Qt и Юникод
Введите ваше имя
Подтвердите код

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

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


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

Ещё более худший:
все исходники в кодировке X
в функции main
QTextCodec::setCodecForTr(QTextCodec::codecForName("X"));
далее строковые литералы оборачивать в QObject::tr()
potkin Дата 20.8.2010, 16:03
 
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 Дата 20.8.2010, 14:26
 
Цитата(potkin @ 20.8.2010, 16:20) *
При сохранениее в БД выдаёт ошибку:
при сохранении чего?
molchanoviv Дата 20.8.2010, 12:58
  А чем юникод не устраивает?
potkin Дата 20.8.2010, 12:20
  Надо потдержку "мультиязычности".
Подскажите как сделать так, чтоб 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


Мне надо, чтоб потдерживались все Кодировки, реально ???
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 19.4.2024, 6:08