Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] Кириллица


Автор: wester 10.1.2012, 21:57
Приветствую
Код

void Widget::on_listWidgetDocs_itemDoubleClicked(QListWidgetItem *item)
{
    QString res = item->text().mid(0,item->text().indexOf("\n"));
 this->testOpenFile(res.toLatin1()); // конвертирую в QByteArray
}

в item->text содержится русский текст. 
Проблема в том, что в res иероглифы вместо текста. Что делать ?

upd переименуйте тему в [Qt] Кириллица из контрола

Автор: wester 10.1.2012, 22:16
Цитата

QString res = item->text().mid(0,item->text().indexOf("\n"));
this->testOpenFile(res.toLocal8Bit());


решил. Пожалуйста, если не сложно, дайте ссылки, прочитать подробно про кодировки в Qt. Что бы наступило просветление в этом вопросе.

Автор: bsa 10.1.2012, 22:57
а что именно тебя интересует?

Latin1 - это стандартная кодировка, символы которой принадлежат только первой половине ASCII (0x0...0x7f)
Local8Bit - это кодировка операционной системы (локаль пользователя под *nix). Под unix именно она используется для ввода/вывода с консоли. Варианты: utf-8, IBM866, Windows-1251...
WCharArray - это кодировка соответствующая wchar_t *.

Под windows есть проблема с кодировкой при работе с консолью. Qt не учитывает, что кодировка Local8Bit (она соответствует ANSI Code Page) может отличаться от кодировки консоли (OEM Code Page).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)