Как в qt creator подключить русский язык
Перейти к содержимому

Как в qt creator подключить русский язык

Как в qt creator подключить русский язык

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

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

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

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

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

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

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

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

Как добавить русский язык в выходной консоли QtCreator ?

ps- qt 5.1.1 mingw пишут что должен автоматом определять если стоит кодировка utf-8,что у меня есть но язык так и не хочет.

А ты случаем не путаешь среды разработки с языком и библиотеками?

В смысле в консоли? В виндовом cmd что ли? Тут консоль юникодофицировать надо (chcp 65001), а не креатор. В qt5 utf8 по умолчанию. А setCodecForTr в qt5 больше нету.

не,мне надо чтобы в консольке,которая после компиляции выскакивает были русские буквы.

Настройка отображения русских букв в консоли

Если мы сохраним файл с программой в кодировке windows-1251, то результат следующей инструкции:

в окне консоли будет выглядеть так:

Причина искажения русских букв заключается в том, что по умолчанию в окне консоли используется кодировка windows-866, а в программе мы ввели текст в кодировке windows-1251. Коды русских букв в этих кодировках отличаются, поэтому происходит искажение. При использовании командной строки пользователь может сменить кодировку вручную, выполнив команду:

Однако этого недостаточно. Кроме смены кодировки необходимо изменить название шрифта, так как по умолчанию используются точечные шрифты, которые не поддерживают кодировку windows-1251. Для нормального отображения русских букв следует в свойствах окна выбрать шрифт Lucida Console (рис. 2.13). Все эти действия вы можете произвести на своем компьютере, однако пользователи не знают в какой кодировке выводятся данные в вашей программе.

2_13.png

Рис. 2.13. Указание шрифта Lucida Console в свойствах окна консоли

Изменить кодировку из программы мы можем с помощью функции system() :

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

Консоль в Windows по умолчанию работает с кодировкой windows-866, поэтому мы можем и файл с программой сохранить в этой кодировке. При использовании редактора Notepad++ вначале создаем новый документ, а затем в меню Кодировки выбираем пункт Кодировки | Кириллица | ОЕМ 866. Вводим текст программы и сохраняем файл.

Вроде все отлично, т. к. мы сохраняем файл в кодировке консоли по умолчанию:

Однако пользователь может сменить кодировку в консоли и мы опять получим проблему с русскими буквами:

Кроме того, при сохранении файла с программой в кодировке windows-866 мы получим множество проблем при работе с файлами и каталогами.

Преобразование кодировки в Windows производится автоматически после настройки локали (локальных настроек компьютера). Настроить локаль позволяет функция setlocale() . Прототип функции:

В первом параметре указывается категория в виде числа от 0 до 5 . Вместо чисел можно использовать макроопределения LC_ALL , LC_COLLATE , LC_CTYPE , LC_MONETARY , LC_NUMERIC и LC_TIME . Во втором параметре задается название локали, после которого через точку указывается кодировка файла с программой (например, Russian_Russia.1251 или Russian_Russia.866 ).

Пример настройки локали и вывода русских букв приведен в листинге 2.15.

Листинг 2.15. Настройка локали

После компиляции и запуска программы русские буквы будут правильно отображаться вне зависимости от текущей кодировки консоли:

Однако, программа может быть запущена на компьютере, в котором кодировка консоли не позволяет отобразить русские буквы. Единственный способ полностью решить проблему с кодировками — выводить сообщения на английском языке. Коды латинских букв во всех однобайтовых кодировках одинаковые, поэтому при использовании английского языка проблем не будет. Однако тут существует другая сложность. Пользователь может не знать английского языка. Как видите не все так просто с кодировками при использовании консольных приложений.

Учебник C++ (Qt Creator и MinGW)
Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *