БлогNot. Вывод кириллицы в консоли QT5

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

Вывод кириллицы в консоли QT5

Распространённая у новичков проблема :) Следует понимать, что QT – кроссплатформенный продукт. Удовлетворительного решения для вывода кириллицы именно в консоли Windows (в отличие от Linux) нет. В QT5 можно попробовать:

QTextCodec *coding = QTextCodec::codecForName("utf-8");
coding->setCodecForLocale(coding);

или

system("chcp 65001");

если ваши файлы в Юникоде (UTF-8). Соответственно, "cp-1251" и "chcp 1251" для российской кодировки Windows. Сам текст файла .cpp, конечно же, тоже должен быть сохранён в нужной кодировке.

Популярное в сети решение с вызовом setCodecForCStrings и setCodecForTr работало только до QT4 включительно. А лучше делать свою консоль на основе QTextEdit, кроме работы с кодировками, будут возможности для оформления. Кроме того, для написания современных приложений следует, в общем случае, предпочитать Юникод.

Консольное приложение может быть реализовано и без использования класса QCoreApplication. В этом случае работа со стандартной консолью Windows возможна следующим образом:

#include <QTextStream>
#include <conio.h>

int main() {
 QTextStream cin(stdin); cin.setCodec("CP866");
 QTextStream cout(stdout); cout.setCodec("CP866");
 cout << QString::fromUtf8("Введите ваше имя: ");
 cout.flush();
 QString name;
 cin >> name;
 cout << QString::fromUtf8("Привет, ") <<
         name <<
         QString::fromUtf8("!") << endl;
 return 0;
}

Проверено в Windows 7 + QT5.2.1, сработало. Обратите внимание, что кодировка консоли здесь именно CP866 (DOS), как и было для DOS-приложений.

Кроме того, можно пользоваться стандартными возможностями C++ (setlocale)


теги: c++ qt язык

02.02.2016, 17:24; рейтинг: 5571

  свежие записипоиск по блогукомментариистатистика

Наверх Яндекс.Метрика
© PerS
вход