Как изменить кодировку консоли visual studio

Решение проблемы с кодировкой кириллицы в консоли. Расскажем, как решить вопрос с непонятными символами и знаками вопроса в консоли.

Зачастую у программистов появляются проблемы с русским языком в консоли при загрузке в неё текстового файла — вместо кириллицы появляются какие-то непонятные символы или вопросительные знаки. Данная проблема очень легко решается — нужно просто сменить кодировку файла на UTF-8 или на Юникод (либо на какую-либо другую, с которой консоль заработает). Как это сделать, вы узнаете в нашей статье.Итак, если у вас в консоли вместо кириллицы написано что-то похожее на символы с нижнего изображения, либо просто непонятный набор неизвестных символов, то всё дело в неправильной кодировке файла.

Проблемы с кодировкой кириллицы в консоли. Смена кодировки - vscode.ru

Исправить данную проблему не составит труда.

Проблемы с кодировкой кириллицы в блокноте

У каждого на компьютере имеется блокнот — самый простой помощник в данной проблеме. Всё, что нам надо — это открыть «сломанный» файл в блокноте (главное, чтобы в нём русский язык отображался правильно, иначе придётся заново переписывать текст), затем нажать в блокноте вкладку «Файл», а затем «Сохранить как…». В низу появившегося окна можно будет найти надпись «Кодировка» с комбобоксом, в котором Вам надо выбрать UTF-8 либо Юникод (это почти одинаковые кодировки, но если одна из них не заработает, то выбирайте вторую).

Проблемы с кодировкой кириллицы в консоли. Смена кодировки - vscode.ru

После сохранения файла попробуйте запустить консоль ещё раз, всё должно заработать.

Проблемы с кодировкой кириллицы в WordPad

Текстовым редактором WordPad также можно починить файл. Делается это идентично способу с блокнотом. Опять надо файл «Сохранить как…», однако выбор кодировки здесь не задан отдельно, как в блокноте, а вынесен в «Тип файла».

Нам нужно выбрать тип «Текстовый документ в Юникоде» и таким образом сохранить файл.

Проблемы с кодировкой кириллицы в консоли. Смена кодировки - vscode.ru

Проблемы с кодировкой кириллицы в Visual Studio

Вариант 1. Изменение кодировки файла.

Если ваш файл открыт у вас в Visual Studio, то для смены кодировки нужно выполнить следующие действия: В рабочей среде кликнуть на вкладке файла:

Проблемы с кодировкой кириллицы в консоли. Смена кодировки - vscode.ru

Затем перейди в меню «Файл» -> «Дополнительные параметры сохранения..».

Проблемы с кодировкой кириллицы в консоли. Смена кодировки - vscode.ru

В появившемся окне смотрим огромный список с названием «Кодировка» и выбираем там Юникод:

Проблемы с кодировкой кириллицы в консоли. Смена кодировки - vscode.ruПосле нажимаем «ОК», и всё готово!

Вариант 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).

Используя последний способ и шаблоны проектов, можно автоматизировать установку кодовой страницы для приложений, собираемых в студии.

  1. Создадим bat-файл следующего содержания:

    set MYSTRING=%~1
    reg add "HKCUConsole%MYSTRING:=_%" /v CodePage /t REG_DWORD /f /d 1251
    

Поместим его, допустим, в папку c:scriptscodepage.bat

  1. Создадим проект консольного приложения под шаблон, допустим Cp1251ConsoleApplication

  2. В свойствах проекта, в разделе События построения — Событие после построения, введем в параметр Командная строка значение:

    c:scriptscodepage.bat "$(TargetPath)"
    
  3. Нажмем в меню Файл — Экспорт шаблона или Проект — Экспорт шаблона, зададим параметры шаблона (галка «Автоматически импортировать в Visual Studio» должна быть отмечена), и нажмем Готово

Теперь при создании нового проекта в в разделе Visual C++ появится шаблон Cp1251ConsoleApplication. Если создавать проект на его основе, при сборке проекта в реестре автоматически будет устанавливаться кодовая страница консоли для этого приложения. Недостаток способа в том, что этот раздел реестра будет замусориваться, если создавать много проектов.

Также, при задействовании команды Запуск без отладки способ не сработает: вместо вашего приложения будет запускаться cmd.exe; для него кодовая страница настраивается отдельно — созданием точно такой же ветки в реестре с путем к cmd.exe.

Подробнее о настройках консоли: Understanding Windows Console Host Settings

9 января 2018

Время чтения: 2 минуты

Превью к статье о том, как исправить русский язык в visual studio

При написании программ в среде 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

Нажмём ОК и соберём программу заново.

Нужная кодировка - Кириллица (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

enter image description here

The last

If that can’t you can try to save it as UTF-8, you can save as with advanced options

enter image description here

Community's user avatar

answered Aug 2, 2017 at 8:11

huoxudong125's user avatar

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

AndyK's user avatar

AndyKAndyK

3543 silver badges6 bronze badges

1

answered May 24, 2020 at 14:45

Fuyan Yuan's user avatar

Tools->Options->Text Editor->General

answered Dec 26, 2016 at 19:00

Emiliano Cervantes's user avatar

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

enter image description here

The last

If that can’t you can try to save it as UTF-8, you can save as with advanced options

enter image description here

Community's user avatar

answered Aug 2, 2017 at 8:11

huoxudong125's user avatar

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

AndyK's user avatar

AndyKAndyK

3543 silver badges6 bronze badges

1

answered May 24, 2020 at 14:45

Fuyan Yuan's user avatar

Tools->Options->Text Editor->General

answered Dec 26, 2016 at 19:00

Emiliano Cervantes's user avatar

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

@Tyriar

Comments

@frocelu

  • 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.

@yuriy-06

«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

@frocelu

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
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

@frocelu

If Integrated Terminal can execute some script automatically,it will help.

@Tyriar

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.

@yuriy-06

«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»],

@frocelu

Thank yuriy-06,but it not works.
Error happens.

@yuriy-06

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?

@yuryleb

"terminal.integrated.shellArgs.windows": ["/K", "chcp 65001"], works better 😉

@Tyriar

@daviwil should this arg be rolled into the vscode-powershell extension? Is there any reason this isn’t the default?

@Tyriar
Tyriar

removed
the

help wanted

Issues identified as good community contribution opportunities

label

Apr 1, 2017

@gpassero

@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"],

@Tyriar

@daviwil

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.

@Tyriar

@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.

@artem-leonov

@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.

@Tyriar

@artem-leonov if this is specific to tasks please create a new issue

@abdelhousni

In Windows,
I set «LC_ALL=fr_BE.UTF-8» as an environement variable (restart Visual Studio Code to apply)

@vscodebot
vscodebot
bot

locked and limited conversation to collaborators

Nov 17, 2017

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить кодировку консоли ubuntu
  • Как изменить кодировку консоли powershell
  • Как изменить кодировку командной строки на utf 8
  • Как изменить кодировку имени файла
  • Как изменить кодировку документа excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии