Почему не работает русский язык в консоли?
Каждый раз при компиляции нового проекта в Visual Studio 2019 вылазит это предупреждение (если в нём есть русские символы)
Как это исправить?
Я пробовал сохранять файл с кодировкой Windows 1251 — не помогло. Русские символы отображаются некорректно. Предположительно, проблема в том, что изначально не установил русский язык в студию.
- Вопрос задан более трёх лет назад
- 1475 просмотров
3 комментария
Простой 3 комментария
Я пробовал сохранять файл с кодировкой Windows 1251
И это — неверное действие. Сохранять нужно в Unicode, как и пишется в твоем сообщении.
Предположительно, проблема в том, что изначально не установил русский язык в студию.
Это неверный вывод. Проблема только в файле, который сохранен в неправильной кодировке.
Русскую локализацию из студии лучше убрать. Иначе у тебя будет потеряно взаимопонимание с остальным миром при решении каких-либо проблем. Текущая твоя проблема лишь подтверждает это.
Русская локализация только запутывает тебя.
argumentvoid @argumentvoid Автор вопроса
Проблема только в файле, который сохранен в неправильной кодировке.
Почему он вообще изначально таковым является? Это проблема VS 2019? В 2010 версии такой проблемы не было.
Русскую локализацию из студии лучше убрать.
Полностью согласен, но всё же для лабы нужны русские символы в коде)
argumentvoid, так, советую изучить это (первые три стадии), это и это. Тебе стоит осознать глубину своего заблуждения.
Решения вопроса 1
Developer, ex-admin
Сохраните исходники в кодировке cp866 — это кодировка по умолчанию в консоли винды.
Если у вас лаба или какой-то тест, то этого будет достаточно.
Но на самом деле это не решение проблемы. В консоли винды кодировку можно менять в самой консоли с помощью команды chcp. Поэтому нормальным выходом из ситуации будет:
1.Исходники писать в UTF8 и использовать широкие символы для хранения строк.
2.Узнаем кодировку консоли
3.Перед выводом перекодируем текст в кодировку консоли, только потом выводим
4.После ввода текста перекодируем введенный текст в UTF и дальше работаем с UTF.
Вы так же можете программно поменять кодировку консоли под ту в которой у вас исходники. Но я не рекомендую этого делать в рабочем проекте.
Ответ написан более трёх лет назад
Нравится 1 22 комментария
argumentvoid @argumentvoid Автор вопроса
1.Исходники писать в UTF8
Как это сделать? Почему вообще такие трудности с этим? В старых версиях студии таких проблем не наблюдал. Достаточно было подключить locale.h + функцию setlocale(LC_ALL, «Russian»); и всё прекрасно работало
Как это сделать?
Просто сохраните исходники в UTF8 или конвертируйте. Для хранения строк используйте wchar_t.
В старых версиях студии таких проблем не наблюдал.
Вы ошибаетесь. Эта проблема в винде существует изначально. Просто потому, что в ее консоли можно менять кодировку. В никсах, как правило, кодировка устанавливается один раз при установке ОС и обычно это UTF8.
Виндовая косоль вообще с UTF плохо дружит (в том смысле, что родные виндовые консольные команды ее не понимают).
argumentvoid @argumentvoid Автор вопроса
Просто сохраните исходники в UTF8
Сохранил не помогло.
Для хранения строк используйте wchar_t.
С wchar_t. не знаком. Я только 1 день знакомлюсь с С++. Нужно сделать лабу. В методичке, разумеется, никто не упомянул, что могут быть такие проблемы). Пробовал как-то изучать Си (на этом же ноутбуке и ОС), это было в 2010 или 2017 версии студии. Там достаточно было для локализации того, что выше описывал. Не знаю как так получается.
Сохранил не помогло.
И не поможет — это надо делать в комплексе, все 4 пункта, что я написал в ответе. Это правильный подход и он работает.
Вы же сейчас можете просто сохранить исходники в cp866. А с правильным подходом разбираться позже.
Там достаточно было для локализации того, что выше описывал. Не знаю как так получается.
Это у вас поверхностное впечатление.
Видимо тогда у вас исходники сохранялись в кодировке совпадающей с кодировкой консоли. И вам это помогло. Но стоило в консоли перед запуском вашей программы дать команду chcp с указанием кодировки отличной от кодировки вашей программы, то вы бы снова словили эту проблему.
Обратите внимание, что родные утилиты винды нормально отображают русский текст, какая бы кодировка не была установлена в консоли (chcp 1251 или chcp 866) — как раз потому, что они перекодируют текст в правильную кодировку.
argumentvoid @argumentvoid Автор вопроса
#include int main()
Что я делаю не так?
И еще добавлю. В консоли винды нельзя быть уверенным, что у пользователя в консоли будет какая-то конкретная кодировка. Это актуально особенно в случае если вы пишите консольное приложение, которое планируете выпускать в мир.
Крякозябры в Qt под Visual Studio
Итак, если вы используете версию Qt под компилятор Visual Studio, то в консоли, где появляются сообщения об ошибках и предупреждениях, вместо русских букв будут появляться крякозябры. Будем это лечить.
Крякозябры
Вот так выглядят крякозябры:

Данная проблема возникает, если использовать русскую версию Visual Studio, ввиду разных кодировок в консолях. В Qt нам нужна кодировка cp1251 .
Вся проблема, кроется в том, что специальная утилита jom , неправильно задает кодировку. Мы в ней исправим это и перекомпилируем утилиту самим же Qt.
Новый способ решения проблемы
Вот только несколько дней назад всё работало на Visual Studio 2017 и Qt 5.11.1. И старый способ с перестраиванием jom проекта работал, но обновил обе программы, и способ работать перестал. Чьё обновление виновато — не знаю.
Поэтому придется обойтись без переделки jom. Алгоритм решения: переводим Visual Studio на английский язык и удаляем русский пакет полностью. И сообщения компилятора будут приходить не крякозябрами, а в виде нормальных английских сообщений.
Сейчас нет возможности проверить, но в прошлом (пару лет назад) при переводе Visual Studio на английский язык после установки Qt возникали проблемы с компиляцией. Так что лучше перевести на английский язык Visual Studio, а потом установить Qt (как у меня сейчас), но может быть уже всё пофиксили.
Итак, меняем язык интерфейса Visual Studio на английский (сообщения компилятора всё равно будут приходить на русском в виде крякозябр):


Запускаем установщик Visual Studio Installer:


И в разделе Языковые пакеты снимаем галочку с русского пакета:


Ждем, когда Visual Studio всё удалит и, скорее всего, установит какие-то свои обновления. После этого перезапускаем Qt Creator. Теперь при компиляции сообщения будут приходить нормальными, но на английском:

P.S. Правда после этого приложения под UWP перестали компилироваться и выдают ошибку вроде этой:
13:44:39: Could not start process "windeployqt.exe" D:\Harrix\Projects\QtProjects\untitled12\_build\release\untitled12.exe --qmldir D:\Harrix\Projects\QtProjects\untitled12 Error while building/deploying project untitled12 (kit: Qt 5.11.1 for UWP 64bit (MSVC 2017)) The kit Qt 5.11.1 for UWP 64bit (MSVC 2017) has configuration issues which might be the root cause for this problem. When executing step "Run windeployqt"
Старый способ решения проблемы
Может потом старый способ заработает, так что оставлю его в статье.
Всё описанное ниже проводилось на Windows 10. Были установлены Visual Studio 2015 Community, Qt 5.8.0 под Visual Studio.
Выкачка исходных кодов jom
Выкачать можно с помощью консоли Git:
git clone https://github.com/qt-labs/jom
Если вы не знаете как выполнить эту команду, то перейдите по адресу https://github.com/qt-labs/jom и скачайте исходные коды программы с сайта:

Изменение jom
Открываем Qt Creator. И там переходим к пункту открытия проекта:

И в папке с исходниками jom находим файл jom.pro и открываем его:



В подпроекте app находим файл main.cpp :

Находим так функцию main :

И там в самом начале этой функции добавляем строчки:
SetConsoleCP(1251); SetConsoleOutputCP(1251);

Сохраняем изменения Ctrl + S .
Компилировать будем в режиме Release :

И компилируем наш проект:

В процессе компиляции вы увидим несколько предупреждений. Это ничего страшного. Главное, чтобы ошибок не было.
Кстати, предупреждения будут с крякозябрами:

Через некоторое время серый треугольник запуска проекта опять станет зеленым. Значит, проект скомпилировался:

Находим скомпилированный jom файл
Перейдите в папку, где у вас находятся скомпилированные файлы Qt.
По умолчанию, если у вас проект, например, называется HarrixTesting , то в папке HarrixTesting , где находится папка, появится папка наподобие такой: build-HarrixTesting-Desktop_Qt_5_5_0_MinGW_32bit-Release (это под MinGW компилятор пример):

В этой папке меня интересует папка bin :

Там должен быть файл jom.exe :

Замена jom файла
Переходим в папку, где находится файл qtcreator.exe . У меня это папка C:\Qt\Qt5.8.0\Tools\QtCreator\bin :

Переименуйте его, чтобы на всякий случай не потерять, если что пойдет не так:

И вставьте сюда скомпилированный jom.exe файл:

Всё. Теперь можете запускать Qt и проверять крякозябры. У меня они ушли:

- Qt logo 2016.svg by Qt Project / (2019-01-26)
Статья обновлена 2018-08
Итак, если вы используете версию Qt под компилятор Visual Studio, то в консоли, где появляются сообщения об ошибках и предупреждениях, вместо русских букв будут появляться крякозябры. Будем это лечить.
Итак, если вы используете версию Qt под компилятор Visual Studio, то в консоли, где появляются сообщения об ошибках и предупреждениях, вместо русских букв будут появляться крякозябры. Будем это лечить.
Harrix
- GitHub User
- TODO@mail.ru
Write an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.
Как сделать русский язык в visual studio 2019
01.06.2015 15:28:47
У меня установлена лицензионная версия MS OFFICE 2013 (русский язык). Какое-то время назад изменился язык интерфейса редактора VBA.
То есть, сам Excel и прочие офисные приложения на русском языке (панель инструментов), при этом в редакторе VBA язык на панели инструментов Итальянский! Не подскажете, как можно изменить язык интерфейса обратно на английский? Не могу найти нигде ответы, так как при запросе «язык интерфейса» выдает сообщения о языке программирования.
Русский язык в консоли Microsoft Visual Studio 2010 Express

Всем привет! В Microsoft Visual Studio 2010 Express при выводе на консоль английского текста все смотрится отлично. Но когда начинаешь работать с русским языком, то вместо текста идет непонятная тарабарщина.
Сегодня я расскажу как в консоли Microsoft Visual Studio 2010 Express сделать так, чтобы Вместо этой тарабарщины выводились русские буквы.
Как работает английский текст:
#include main ()
И, соответственно, его отображение в консоли:

Если мы вместо «Hello world!» напишем «Привет мир!», то в результате получим:

Решение:
Подключаем дополнительно библиотеку locale.h, которая используется для задач, связанных с локализацией, и добавляем функцию setlocale (задает локаль, которая будет использоваться текущей программой):
setlocale(LC_ALL, "RUSSIAN");
setlocale(0, "");
Таким образом наша программа приобретает вид:
#include #include main()
Теперь в консоли все отображается корректно:

Надеюсь, что данная информация будет вам интересна. Всем удачи!
- Как перевести админку wordpress на русский язык
- Как сменить язык при входе в систему (язык по умолчанию)
- Xampp, Windows 10 и ошибка Apache
- Смена языка в Windows 7 Home и Professional
- Использование Microsoft Word с Git
Posted in C and tagged С.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Свежие записи
- Как установить Gtranslate в Cs-Cart (свежее решение)
- Установка Let’s Encrypt SSL сертификата на домен с редиректом
- Как сбросить пароль на видеорегистраторе Dahua DH-XVR1B16H
- Cs-Cart и пользовательский css
- Отсутствуют драйвера на устройства PCI\VEN_8086&DEV_5A9C и PCI\VEN_8086&DEV_5A9E
Свежие комментарии
- Николай Короткин к записи Ошибка часов: не открываются сайты в Chrome и Opera
- Paul к записи Ошибка часов: не открываются сайты в Chrome и Opera
- Пробел к записи Ошибка часов: не открываются сайты в Chrome и Opera
- Николай Короткин к записи Как настроить планировщик задач на перезагрузку компьютера каждую ночь
- Нафиг не нужно к записи Как настроить планировщик задач на перезагрузку компьютера каждую ночь
Метки
Друзья
- Cайт статистики прочитанных книг
- Заметки Сисадмина
- Отличный сайт по английскому языку
