Зачастую у программистов появляются проблемы с русским языком в консоли при загрузке в неё текстового файла — вместо кириллицы появляются какие-то непонятные символы или вопросительные знаки. Данная проблема очень легко решается — нужно просто сменить кодировку файла на UTF-8 или на Юникод (либо на какую-либо другую, с которой консоль заработает). Как это сделать, вы узнаете в нашей статье.Итак, если у вас в консоли вместо кириллицы написано что-то похожее на символы с нижнего изображения, либо просто непонятный набор неизвестных символов, то всё дело в неправильной кодировке файла.
Исправить данную проблему не составит труда.
Проблемы с кодировкой кириллицы в блокноте
У каждого на компьютере имеется блокнот — самый простой помощник в данной проблеме. Всё, что нам надо — это открыть «сломанный» файл в блокноте (главное, чтобы в нём русский язык отображался правильно, иначе придётся заново переписывать текст), затем нажать в блокноте вкладку «Файл», а затем «Сохранить как…». В низу появившегося окна можно будет найти надпись «Кодировка» с комбобоксом, в котором Вам надо выбрать UTF-8 либо Юникод (это почти одинаковые кодировки, но если одна из них не заработает, то выбирайте вторую).
После сохранения файла попробуйте запустить консоль ещё раз, всё должно заработать.
Проблемы с кодировкой кириллицы в WordPad
Текстовым редактором WordPad также можно починить файл. Делается это идентично способу с блокнотом. Опять надо файл «Сохранить как…», однако выбор кодировки здесь не задан отдельно, как в блокноте, а вынесен в «Тип файла».
Нам нужно выбрать тип «Текстовый документ в Юникоде» и таким образом сохранить файл.
Проблемы с кодировкой кириллицы в Visual Studio
Вариант 1. Изменение кодировки файла.
Если ваш файл открыт у вас в Visual Studio, то для смены кодировки нужно выполнить следующие действия: В рабочей среде кликнуть на вкладке файла:
Затем перейди в меню «Файл» -> «Дополнительные параметры сохранения..».
В появившемся окне смотрим огромный список с названием «Кодировка» и выбираем там Юникод:

Вариант 2. Изменение кодировки программно.
Кроме того, в Visual Studio можно легко поменять кодировку файла в самом коде. Делается это, на примере работы с классом StreamReader, вот так:
|
StreamReader sr = new StreamReader(«E:\textfile.txt», System.Text.Encoding.Default); |
Как вы видите, после стандартной процедуры указания пути файла можно придать объекту ещё один аргумент — значение кодировки. В аргументе System.Text.Encoding.Default можно также выбрать несколько видов кодировок и посмотреть, при какой кодировке файл выдаст нормальный русский текст. Вместо значения Default можно подставить UTF8, ASCII, Unicode и ещё несколько других значений, но желательно не отклоняться от значения, приведенного в примере выше.
Спасибо за внимание! Надеемся, наша статья помогла Вам. Будем рады комментариям и вопросам.
На самом деле, кодовая страница для консольных приложений не является настройкой, которую можно изменить через Visual Studio. Дело в том, что не существует никакой «консоли Visual Studio» — при запуске консольного приложения из студии используется самая обычная консоль ОС, та же самая, что и для cmd.exe или любого другого консольного приложения (она может отличаться внешне, в зависимости от настроек, но суть та же). Кодовую страницу для нее можно задать:
-
На уровне ОС, установкой определенных ключей реестра
-
В конкретном сеансе командной оболочки, выполнением команды
chcp 1251. Таким образом, можно изменить действие при запуске приложения (в разделе «Отладка» в свойствах проекта) наc:windowssystem32cmd.exe /k chcp 1251 && $(TargetPath)для достижения требуемого эффекта. Но тогда отладчик будет отлаживать cmd.exe, а не нашу программу -
Для конкретного консольного приложения через параметр реестра
HKCUConsole(путь к приложению)CodePage(REG_DWORD).
Используя последний способ и шаблоны проектов, можно автоматизировать установку кодовой страницы для приложений, собираемых в студии.
-
Создадим bat-файл следующего содержания:
set MYSTRING=%~1 reg add "HKCUConsole%MYSTRING:=_%" /v CodePage /t REG_DWORD /f /d 1251
Поместим его, допустим, в папку c:scriptscodepage.bat
-
Создадим проект консольного приложения под шаблон, допустим Cp1251ConsoleApplication
-
В свойствах проекта, в разделе События построения — Событие после построения, введем в параметр Командная строка значение:
c:scriptscodepage.bat "$(TargetPath)" -
Нажмем в меню Файл — Экспорт шаблона или Проект — Экспорт шаблона, зададим параметры шаблона (галка «Автоматически импортировать в Visual Studio» должна быть отмечена), и нажмем Готово
Теперь при создании нового проекта в в разделе Visual C++ появится шаблон Cp1251ConsoleApplication. Если создавать проект на его основе, при сборке проекта в реестре автоматически будет устанавливаться кодовая страница консоли для этого приложения. Недостаток способа в том, что этот раздел реестра будет замусориваться, если создавать много проектов.
Также, при задействовании команды Запуск без отладки способ не сработает: вместо вашего приложения будет запускаться cmd.exe; для него кодовая страница настраивается отдельно — созданием точно такой же ветки в реестре с путем к cmd.exe.
Подробнее о настройках консоли: Understanding Windows Console Host Settings
9 января 2018
Время чтения: 2 минуты

При написании программ в среде Visual studio иногда возникает необходимость вывода текста на русском языке. Казалось бы, что тут сложного? Берёшь и выводишь! А вот нет, иначе бы не было кучи форумов и страничек в интернете с этой проблемой.
А проблема заключается в кодировке, причём все сайты пишут работающие способы, но, к сожалению, далеко не у всех. В этой статье мы расскажем вам о том, как действительно нужно исправлять эту проблему.
Итак, вы написали программу, в которой решили вывести строку русскими буквами, например, «Русский язык в консоли!». Вы запускаете программу, но вместо заветной строки видите там «кракозябры»! Что же делать?
#include <iostream>
int main() {
std::cout << "Русский язык в консоли!" << std::endl;
getchar();
return 0;
}
Программа, выводящая русскую строку в visual studio

В результате видим кракозябры
Чаще всего пишут, что достаточно лишь добавить setlocale(LC_ALL, "Russian"); в начале программы (для C программ требуется подключение библиотеки locale.h: #include <locale.h>). Сделаем это. Теперь программа должна выглядеть так:
#include <iostream>
#include <locale.h>
int main() {
setlocale(LC_ALL, "Russian");
std::cout << "Русский язык в консоли!" << std::endl;
getchar();
return 0;
}
Программа, выводящая русскую строку в visual studio
А возможный результат может выглядеть так:

Результат может быть как корректным, так и кракозябристым
Запустим её, если русский язык уже выводится — поздравляем! Проблема решена! Если нет, то идём дальше.
В верхнем меню выберете пункт файл, Сохранить <название вашего файла> как. В открывшемся окне вместо Сохранить выберем Сохранить с кодировкой, подтвердим, что желаем заменить файлы и выберем кодировку Кириллица (Windows) - кодовая страница 1251.

Сохраняем файл в другой кодировке

Выбираем сохранение с кодировкой

Выбираем кодировку Кириллица (Windows) — кодовая страница 1251
Нажмём ОК и соберём программу заново.

Нужная кодировка — Кириллица (Windows) — кодовая страница 1251
Запустим программу вновь и теперь русский язык будет корректно выводиться!

Программа запустилась и русский язык выводится
UPD: Ещё один способ заставить работать русский язык
Если ничего из вышеперечисленного не помогло, значит проблема в кодировке самой консоли. А её можно изменить с помощью команды system("chcp 1251");, то есть программа будет выглядеть так:
#include <iostream>
#include <locale.h>
#include <cstdlib>
int main() {
setlocale(LC_ALL, "Russian"); // задаём русский текст
system("chcp 1251"); // настраиваем кодировку консоли
std::cout << "Русский язык в консоли!" << std::endl;
getchar();
return 0;
}

Программист, сооснователь programforyou.ru, в постоянном поиске новых задач и алгоритмов
Языки программирования: Python, C, C++, Pascal, C#, Javascript
Выпускник МГУ им. М.В. Ломоносова
I did the search, but only found ways to change the encoding for individual files. I want to start projects with the encoding already configured as UTF-8.
asked Dec 26, 2016 at 18:54
1
I found two ways
Alternate
There is alternate way, please try it
Tools->Options->Environment->Documents
The last
If that can’t you can try to save it as UTF-8, you can save as with advanced options
answered Aug 2, 2017 at 8:11
huoxudong125huoxudong125
1,8862 gold badges25 silver badges41 bronze badges
2
Visual Studio supports EditorConfig files (https://editorconfig.org/)
Visual Studio (VS2017 and later) searches for a file named ‘.editorconfig’ in the directory containing your source files, or anywhere above this directory in the hierarchy. This file can be used to direct the editor to use utf-8. I use the following:
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4
The [*] line is a mask and means for all files — the scope of the commands can be reduced using e.g. [*.{h,cpp}]
There are further possibilities, particularly for C# files. Full details can be found at https://learn.microsoft.com/en-us/visualstudio/ide/create-portable-custom-editor-options?view=vs-2019
answered Jan 28, 2021 at 20:50
AndyKAndyK
3543 silver badges6 bronze badges
1
answered May 24, 2020 at 14:45
Tools->Options->Text Editor->General
answered Dec 26, 2016 at 19:00
1
I did the search, but only found ways to change the encoding for individual files. I want to start projects with the encoding already configured as UTF-8.
asked Dec 26, 2016 at 18:54
1
I found two ways
Alternate
There is alternate way, please try it
Tools->Options->Environment->Documents
The last
If that can’t you can try to save it as UTF-8, you can save as with advanced options
answered Aug 2, 2017 at 8:11
huoxudong125huoxudong125
1,8862 gold badges25 silver badges41 bronze badges
2
Visual Studio supports EditorConfig files (https://editorconfig.org/)
Visual Studio (VS2017 and later) searches for a file named ‘.editorconfig’ in the directory containing your source files, or anywhere above this directory in the hierarchy. This file can be used to direct the editor to use utf-8. I use the following:
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 4
The [*] line is a mask and means for all files — the scope of the commands can be reduced using e.g. [*.{h,cpp}]
There are further possibilities, particularly for C# files. Full details can be found at https://learn.microsoft.com/en-us/visualstudio/ide/create-portable-custom-editor-options?view=vs-2019
answered Jan 28, 2021 at 20:50
AndyKAndyK
3543 silver badges6 bronze badges
1
answered May 24, 2020 at 14:45
Tools->Options->Text Editor->General
answered Dec 26, 2016 at 19:00
1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Closed
frocelu opened this issue
Feb 3, 2017
· 16 comments
Assignees
Comments
- VSCode Version: 1.9.0
- OS Version: Windows 10 x64
Steps to Reproduce:
As title,I want to set the default encoding of Integrated Terminal to UTF-8.But I don’t know how to do this.
Please teach me how to do this,thanks.
«tsc» �� ����� ����७��� ��� ���譥�
��������, �ᯮ��塞�� �ணࠬ��� ��� �������� 䠩���.
here is what the compiler is writting,
in the previous VSCODE version, output is worked fine.
VSCode Version: 1.9.0
OS Version: Windows 7 x64 / language = russian
You can use «chcp» command to set the encoding of Terminal.
Ex: «chcp 65001» is set to UTF-8.
But, you need do this when vs code open everytime.
Tyriar
added
help wanted
Issues identified as good community contribution opportunities
terminal
Integrated terminal issues
info-needed
Issue requires more information from poster
labels
Feb 3, 2017
If Integrated Terminal can execute some script automatically,it will help.
I don’t know much about setting shell encoding on Windows so any help would be appreciated. If this can be set via an environment variable then that is doable. By default VS Code sets the $LANG environment variable on macOS to fix this there.
«chch 65001» not helped in output window, I,m just set locale to «en», as explained here — https://code.visualstudio.com/docs/customization/locales.
It helped on the same computer, but it does not work on another (wrong ouput).
It may be working some in preferences
«terminal.integrated.shell.windows»: «C:Windowssystem32cmd.exe K chcp 65001»,
or
«terminal.integrated.shellArgs.windows»: [«chcp 65001»],
Thank yuriy-06,but it not works.
Error happens.
I’m run in cmd.exe «REG ADD HKCUConsole /v CodePage /t REG_DWORD /d 65001 /f»
when i’m run vscode, in output window:
«Parameter format not correct — 65001»
but when i’m typed
«D:…projektfund_ts-master>chcp» =>
«Active code page: 65001.»
Maybe it’s the solution?
"terminal.integrated.shellArgs.windows": ["/K", "chcp 65001"], works better 😉
@daviwil should this arg be rolled into the vscode-powershell extension? Is there any reason this isn’t the default?
Tyriar
removed
the
help wanted
Issues identified as good community contribution opportunities
label
Apr 1, 2017
@yuryleb I set PYTHONIOENCODING to UTF-8 and your solution didn’t work for me. This one seems to have worked:
"terminal.integrated.shellArgs.windows": ["-NoExit", "/c", "chcp.com 65001"],
Apologies, I’ve been buried in e-mail for the past week! This seems like a general issue with the terminal right? Seems that some here are having to configure cmd.exe with the same chcp call. I’ll make sure the PS extension’s Integrated Console also sets the mode correctly.
@daviwil setting it as the default could cause issues as then users have to change the shellArgs when they change the shell. Otherwise the terminal will exit immediately with an ambiguous error message due to unrecognized args.
@Tyriar But when use tasks with this workaround error happens. «Parameter format not correct — /d» for cmd and «Parameter format not correct — -Command» for powershell. I think you need to reopen this issue.
@artem-leonov if this is specific to tasks please create a new issue
In Windows,
I set «LC_ALL=fr_BE.UTF-8» as an environement variable (restart Visual Studio Code to apply)
vscodebot
bot
locked and limited conversation to collaborators
Nov 17, 2017







