- Кодировки и окончания строк
- Дополнительные параметры сохранения
- Русский язык в Visual Studio. Что делать, если ничего не помогает
- UPD: Ещё один способ заставить работать русский язык
- /utf-8 (Задайте для исходных и исполняемых наборов символов значение UTF-8 ).
- Синтаксис
- Remarks
- установка параметра в Visual Studio или программными средствами
- Установка данного параметра компилятора в среде разработки Visual Studio
- Как установить стандартную кодировку в Visual Studio
- Какие
- Что дальше
- Основные сведения о кодировке файлов в VS Code и PowerShell
- Что такое кодировка и почему она важна?
- Распространенные причины проблемы с кодировкой
- Как определить наличие проблемы с кодировкой
- Взаимодействие расширения PowerShell для VS Code с кодировками
- Выбор подходящей кодировки
- Настройка VS Code
- Настройка PowerShell
- Существующие скрипты
- Интегрированная среда сценариев (ISE) PowerShell
- Система управления версиями
- Среды других участников
- Другие программы
- Другие ресурсы о кодировках в PowerShell
Кодировки и окончания строк
В Visual Studio следующие символы интерпретируются как разрывы строк:
CR LF: возврат каретки + перевод строки, символы Юникода 000D + 000A
LF: перевод строки, символ Юникода 000A
NEL: следующая строка, символ Юникода 0085
LS: разделитель строки, символ Юникода 2028
PS: разделитель абзаца, символ Юникода 2029
Для текста, который копируется из других приложений, сохраняется исходная кодировка и символы разрыва строки. Например, при копировании текста из Блокнота и вставке его в текстовый файл в Visual Studio текст имеет те же параметры, которые применялись в Блокноте.
При открытии файла, который содержит разные символы разрыва строки, может появиться диалоговое окно с запросом о том, следует ли нормализовать несогласованные символы разрыва строки и какой тип разрыва строки выбрать.
Дополнительные параметры сохранения
Чтобы определить тип символов разрыва строки, можно использовать параметры в диалоговом окне Файл > Дополнительные параметры сохранения. Кроме того, с помощью этих параметров можно изменить кодировку файла.
Если в меню Файл пункт Дополнительные параметры сохранения отсутствует, его можно добавить.
- Выберите Инструменты, Настроить,
- Откройте вкладку Команды, выберите переключатель Строка меню и в соответствующем раскрывающемся списке выберите Файл. Нажмите кнопку Добавить команду.
- В диалоговом окне Добавление команды в разделе Категории выберите Файл, а затем в списке Команды выберите элемент Дополнительные параметры сохранения. Нажмите кнопку OK.
- С помощью кнопок Вверх и Вниз переместите команду в нужное место в меню. Чтобы закрыть диалоговое окно Настройки, нажмите кнопку Закрыть. Дополнительные сведения см. в разделе Настройка меню и панелей инструментов.
Кроме того, чтобы открыть диалоговое окно Дополнительные параметры сохранения, можно выбрать пункт меню Файл > Сохранить как. В диалоговом окне Сохранить файл как щелкните треугольник раскрывающегося списка рядом с кнопкой Сохранить и выберите пункт Сохранить с кодировкой.
Источник
Русский язык в Visual Studio. Что делать, если ничего не помогает
Время чтения: 2 минуты
При написании программ в среде Visual studio иногда возникает необходимость вывода текста на русском языке. Казалось бы, что тут сложного? Берёшь и выводишь! А вот нет, иначе бы не было кучи форумов и страничек в интернете с этой проблемой.
А проблема заключается в кодировке, причём все сайты пишут работающие способы, но, к сожалению, далеко не у всех. В этой статье мы расскажем вам о том, как действительно нужно исправлять эту проблему.
Итак, вы написали программу, в которой решили вывести строку русскими буквами, например, «Русский язык в консоли!». Вы запускаете программу, но вместо заветной строки видите там «кракозябры»! Что же делать?
Чаще всего пишут, что достаточно лишь добавить setlocale(LC_ALL, «Russian»); в начале программы (для C программ требуется подключение библиотеки locale.h: #include ). Сделаем это. Теперь программа должна выглядеть так:
А возможный результат может выглядеть так:
Запустим её, если русский язык уже выводится — поздравляем! Проблема решена! Если нет, то идём дальше.
В верхнем меню выберете пункт файл , Сохранить как . В открывшемся окне вместо Сохранить выберем Сохранить с кодировкой , подтвердим, что желаем заменить файлы и выберем кодировку Кириллица (Windows) — кодовая страница 1251 .
Нажмём ОК и соберём программу заново.
Запустим программу вновь и теперь русский язык будет корректно выводиться!
UPD: Ещё один способ заставить работать русский язык
Если ничего из вышеперечисленного не помогло, значит проблема в кодировке самой консоли. А её можно изменить с помощью команды system(«chcp 1251»); , то есть программа будет выглядеть так:
Программист, сооснователь programforyou.ru, в постоянном поиске новых задач и алгоритмов
Языки программирования: Python, C, C++, Pascal, C#, Javascript
Выпускник МГУ им. М.В. Ломоносова
Programforyou — это сообщество, в котором Вы можете подтянуть свои знания по программированию, узнать, как эффективно решать те или иные задачи, а также воспользоваться нашими онлайн сервисами.
Источник
/utf-8 (Задайте для исходных и исполняемых наборов символов значение UTF-8 ).
Задает как исходную кодировку, так и кодировку выполнения в виде UTF-8 .
Синтаксис
Remarks
С /utf-8 помощью параметра можно указать как кодировку исходного кода, так и кодировку выполнения, используя UTF-8 . Он эквивалентен указанию /source-charset:utf-8 /execution-charset:utf-8 в командной строке. Любой из этих параметров также включает /validate-charset параметр по умолчанию. Список поддерживаемых идентификаторов кодовых страниц и имен наборов символов см. в разделе идентификаторы кодовых страниц.
по умолчанию Visual Studio обнаруживает метку порядка следования байтов, чтобы определить, имеет ли исходный файл формат в кодировке юникод, например UTF-16 или UTF-8 . Если метка порядка байтов не найдена, предполагается, что исходный файл кодируется с помощью кодовой страницы текущего пользователя, если не указана кодовая страница с помощью /utf-8 или /source-charset параметра. Visual Studio позволяет сохранить исходный код C++ с помощью любой из нескольких кодировок символов. Сведения о кодировках исходного кода и выполнения см. в разделе наборы символов в документации по языку.
установка параметра в Visual Studio или программными средствами
Установка данного параметра компилятора в среде разработки Visual Studio
Откройте диалоговое окно Окна свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойств сборки в Visual Studio.
Выберите страницу свойств Свойства конфигурации > C/C++ > Командная строка .
В окне Дополнительные параметры добавьте /utf-8 параметр, чтобы указать предпочтительную кодировку.
Выберите ОК для сохранения внесенных изменений.
Источник
Как установить стандартную кодировку в Visual Studio
Я ищу способ настроить Visual Studio, чтобы он всегда сохранял мои файлы в UTF-8.
Я нашел только варианты, чтобы расширить этот проект. Есть ли способ установить его в Visual Studio?
Вы хотите, чтобы файлы сохранялись как UTF-8, потому что вы используете специальные символы, которые будут потеряны при кодировке ASCII? Если это так, то есть глобальная настройка VS2008 с Tools > Options > Environment > Documents именем Save documents as Unicode when data cannot be saved in codepage . Когда этот параметр включен, VS2008 будет сохранять как Unicode, если определенные символы не могут быть представлены в кодовой странице по умолчанию.
Кроме того, какие файлы не сохраняются как UTF-8? Все мои .cs, .csproj, .sln, .config, .as * x и т.д. по умолчанию сохраняются как UTF-8 (с подписью, отметками порядка байтов).
Какие
EditorConfig помогает разработчикам определять и поддерживать согласованные стили кодирования для разных редакторов и IDE.
Это также включает кодировку файлов.
EditorConfig по умолчанию встроен в Visual Studio 2017, и у меня были плагины для таких старых версий, как VS2012. Подробнее читайте на странице EditorConfig Visual Studio Plugin .
Вы можете установить файл конфигурации EditorConfig на достаточно высоком уровне в структуре папок, чтобы охватить все предполагаемые репозитории (вплоть до корня диска, если ваши файлы действительно разбросаны повсюду) и настроить параметр charset :
charset : установите latin1, utf-8, utf-8-bom, utf-16be или utf-16le для управления набором символов.
Вы можете добавлять фильтры, исключения и т. Д. На каждом уровне папки или по имени / типу файла, если хотите более точный контроль.
После настройки совместимые IDE должны автоматически делать это, чтобы соответствующие файлы соответствовали установленным правилам. Обратите внимание, что Visual Studio не конвертирует все ваши файлы автоматически, но вносит свой вклад, когда вы работаете с файлами в среде IDE (открывайте и сохраняйте).
Что дальше
Хотя у вас может быть настройка для всей Visual Studio, я настоятельно рекомендую по-прежнему включать корень EditorConfig в систему управления версиями вашего решения, чтобы явные настройки также автоматически синхронизировались со всеми членами команды. Корневой файл editorconfig вашего диска может быть запасным вариантом, если в каком-то проекте еще не настроены собственные файлы editorconfig.
Источник
Основные сведения о кодировке файлов в VS Code и PowerShell
При использовании VS Code для создания и редактирования сценариев PowerShell очень важно, чтобы ваши файлы сохранялись в правильной кодировке символов.
Что такое кодировка и почему она важна?
VS Code управляет интерфейсом ввода строки символов в буфер пользователем и чтения-записи блоков байтов в файловой системе. При сохранении файла в VS Code используется кодирование текста для определения того, какие байты получит каждый символ. Подробные сведения см. в статье О шифровании символов.
Аналогичным образом, когда оболочка PowerShell запускает скрипт, ей необходимо преобразовать байты из файла в символы для преобразования файла в программу PowerShell. Так как VS Code записывает файл, а PowerShell считывает файл, этим средствам необходимо использовать одну и ту же систему кодировки. Этот процесс синтаксического анализа скрипта PowerShell идет так: байты -> символы -> лексемы -> дерево абстрактного синтаксиса -> выполнение.
И VS Code, и PowerShell устанавливаются с подходящей конфигурацией кодировки по умолчанию. Тем не менее кодировка по умолчанию, используемая PowerShell, была изменена с выпуском PowerShell Core (версии 6.x). Чтобы избежать проблем с PowerShell и расширениями PowerShell в VS Code, необходимо настроить параметры VS Code и PowerShell должным образом.
Распространенные причины проблемы с кодировкой
Проблемы с кодировкой возникают, если кодировка VS Code в целом или вашего файла скрипта не совпадает с кодировкой, ожидаемой в PowerShell. В PowerShell нет способа автоматически определить кодировку файла.
Проблемы с кодировкой более вероятны при использовании символов не из 7-разрядной кодировки ASCII. Пример:
- Расширенные небуквенные символы, такие как длинное тире ( — ), неразрывный пробел ( ) или левая двойная кавычка ( » ).
- Латинские символы с диакритикой ( É , ü )
- Нелатинские символы, такие как кириллица ( Д , Ц )
- Символы иероглифического письма ( 本 , 화 , が ).
Распространенные причины проблем с кодировкой:
- Параметры кодировок по умолчанию VS Code и PowerShell не были изменены. В версиях до PowerShell 5.1 (включительно) кодировка по умолчанию отличается от используемой в VS Code.
- Открыт другой редактор, и файл перезаписан в новой кодировке. Это часто происходит с интегрированной средой сценариев.
- Файл возвращается в систему управления версиями в кодировке, отличающейся от той, которая ожидается в VS Code или PowerShell. Это может произойти, когда участники совместной работы используют редакторы с различными конфигурациями кодировок.
Как определить наличие проблемы с кодировкой
Часто ошибки кодирования в скриптах представляются как ошибки синтаксического анализа. Если вы видите странные последовательности символов в скрипте, это может быть проблемой. В примере ниже тире ( – ) отображается в виде символов – :
Эта проблема возникает, так как VS Code кодирует символ – в UTF-8 как байты 0xE2 0x80 0x93 . Если эти байты декодируются в кодировке Windows-1252, они интерпретируются как символы – .
Некоторые странные последовательности символов, которые можно видеть:
- – вместо – .
- – вместо — .
- Ä2 вместо Ä .
- Â вместо (неразрывный пробел);
- é вместо é .
Этот удобный справочник перечисляет распространенные шаблоны, которые указывают на проблему между кодировками UTF-8 и Windows-1252.
Взаимодействие расширения PowerShell для VS Code с кодировками
Расширение PowerShell взаимодействует со скриптами несколькими способами:
- При изменении скриптов в VS Code содержимое отправляется из VS Code в расширение. Протокол языкового сервера требует, чтобы это содержимое передавалось в UTF-8. Таким образом, расширение не сможет получить неправильную кодировку.
- При выполнении скриптов в интегрированной консоли они считываются оболочкой PowerShell непосредственно из файла. Если кодировка PowerShell отличается от кодировки VS Code, может произойти сбой.
- Когда скрипт, который открыт в VS Code, ссылается на другой скрипт, который не был открыт в VS Code, расширение загружает содержимое второго скрипта из файловой системы. Расширение PowerShell по умолчанию использует кодировку UTF-8, но при этом применяет обнаружение метки порядка байтов (BOM), чтобы выбрать правильную кодировку.
Проблема возникает при предположении кодировки, не использующей BOM (такой как UTF-8 без метки порядка байтов или Windows-1252). Расширение PowerShell по умолчанию использует UTF-8. Расширение не может изменить параметры кодировки в VS Code. Дополнительные сведения см. в разделе Проблема № 824.
Выбор подходящей кодировки
Различные системы и приложения могут использовать различные кодировки:
- В .NET Standard, в Интернете и в среде Linux теперь в основном используется кодировка UTF-8.
- Во многих приложениях .NET Framework используется UTF-16. По историческим причинам ее иногда называют «Юникод»; сейчас этот термин относится к более широкому стандарту, охватывающему UTF-8 и UTF-16.
- В Windows многие приложения, которые были созданы еще до распространения Юникода, по-прежнему могут по умолчанию использовать Windows-1252.
Кодировки Юникода также используют понятие метки порядка следования байтов (BOM). BOM ставится в начале текста, чтобы декодер мог определить, какая кодировка используется в тексте. Для многобайтовых кодировок BOM также указывает порядок следования байтов кодировки. BOM представляются байтами, которые редко встречаются в тексте в Юникоде. Это позволяет сделать обоснованное предположение, что текст записан в Юникоде, если присутствует метка BOM.
BOM не являются обязательными; в мире Linux они не так популярны, поскольку во всех прочих местах используется надежное соглашение UTF-8. Большинство приложений Linux предполагают, что текстовый ввод кодируется в UTF-8. Хотя многие приложения Linux могут распознавать и правильно обрабатывать BOM, некоторые этого не делают, что приводит к появлению артефактов в тексте, открываемом с помощью этих приложений.
Таким образом:
- Если вы работаете в основном с приложениями Windows и Windows PowerShell, следует предпочтительно использовать такие кодировки, как UTF-8 с BOM или UTF-16.
- Если вы работаете на разных платформах, следует отдавать предпочтение UTF-8 с BOM.
- Если вы работаете главным образом в контексте Linux, следует отдавать предпочтение UTF-8 без BOM.
- Windows-1252 и latin-1 — устаревшие кодировки, которых по возможности следует избегать. Тем не менее некоторые приложения предыдущих версий в Windows зависят от их.
- Также стоит отметить, что подписывание скриптов зависит от кодировки, то есть изменение кодировки в подписанном скрипте потребует повторного подписывания.
Настройка VS Code
Кодировка VS Code по умолчанию — UTF-8 без метки порядка байтов.
Чтобы задать Кодировка в VS Code, перейдите к параметрам VS Code ( CTRL + , ) и задайте параметр «files.encoding» :
Возможны следующие значения:
- utf8 : [UTF-8] без метки порядка байтов
- utf8bom : [UTF-8] с меткой порядка байтов
- utf16le : [UTF-16] с прямым порядком байтов
- utf16be : [UTF-16] с обратным порядком байтов
- windows1252 : [Windows-1252]
Должен отобразиться раскрывающийся список представления графического пользовательского интерфейса или дополнение в представлении JSON.
Чтобы обеспечить автоматическое определение кодировки, если это возможно, можно также добавить следующее:
Если вы не хотите, чтобы эти параметры влияли на все типы файлов, в VS Code можно задавать конфигурации для каждого языка отдельно. Создать параметр для конкретного языка можно, поместив параметры в поле [ ] . Пример:
Вы также можете установить средство отслеживания Gremlins для Visual Studio Code. Это расширение раскрывает определенные символы Юникода, которые могут быть легко повреждены из-за своей невидимости или схожести с другими обычными символами.
Настройка PowerShell
В PowerShell кодировка по умолчанию зависит от версии:
- В PowerShell 6+ кодировка по умолчанию на всех платформах — UTF-8 без метки порядка байтов.
- В Windows PowerShell кодировка по умолчанию — обычно Windows-1252, расширение latin-1, которое также называется ISO 8859-1.
В PowerShell 5 + можно определить кодировку по умолчанию так:
Следующий скрипт может использоваться для определения кодировки, которую ваш сеанс PowerShell выводит для скрипта, где нет метки порядка байтов.
Можно настроить PowerShell так, чтобы использовать заданную кодировку в более общем виде с помощью параметров профиля. См. следующие статьи:
Заставить PowerShell использовать конкретную кодировку для входных данных невозможно. В PowerShell 5.1 и более ранних версий в Windows с языковым стандартом en-US по умолчанию используется кодировка Windows-1252, если отсутствует метка порядка байтов. Другие параметры языкового стандарта могут использовать другую кодировку. Для обеспечения совместимости лучше сохранять скрипты в Юникоде с меткой порядка байтов.
Любые другие имеющиеся у вас инструменты для работы со скриптами PowerShell могут зависеть от выбранных параметров кодировки или преобразовывать скрипты в другую кодировку.
Существующие скрипты
Скрипты, которые уже находятся в файловой системе, могут нуждаться в повторном кодировании в указанную вами кодировку. В нижней строке VS Code вы увидите метку UTF-8. Щелкните ее, чтобы открыть панель действий, и выберите команду Сохранить с кодировкой. Теперь вы можете выбрать новую кодировку для этого файла. Подробные инструкции см. в разделе Кодировка в VS Code.
Если вам нужно повторно кодировать несколько файлов, можно использовать следующий скрипт:
Интегрированная среда сценариев (ISE) PowerShell
При редактировании скриптов с помощью интегрированной среды сценариев PowerShell необходимо синхронизировать здесь параметры кодировки.
Интегрированная среда сценариев должна учитывать метку порядка байтов, но можно также использовать отражение для задания кодировки. Обратите внимание, что это значение не сохраняется между запусками.
Система управления версиями
Некоторые системы управления версиями, например git, игнорируют кодировки; git отслеживает только байты. Поведение других, например Azure DevOps или Mercurial, может отличаться. Даже некоторые средства, основанные на git, полагаются на декодирование текста.
Если это так, убедитесь, что вы:
- Настроили кодировку в системе управления версиями в соответствии с вашей конфигурацией VS Code.
- Сделали так, что все файлы добавляются в систему управления версиями в соответствующей кодировке.
- Остерегайтесь изменять кодировки, полученные через систему управления версиями. Ключевым признаком здесь будет разностный файл, который указывает, что изменения отсутствуют (так как изменены байты, но не символы).
Среды других участников
Настроив систему управления версиями, убедитесь также, что параметры других участников, работающих над теми файлами, к которым вы предоставляете общий доступ, не переопределяют кодировку путем повторного кодирования файлов PowerShell.
Другие программы
Все другие программы, которые считывают или записывают скрипты PowerShell, могут перекодировать их.
- Использование буфера обмена для копирования и вставки скрипта. Такое часто встречается в следующих случаях:
- Копирование скрипта в виртуальную машину.
- Копирование скрипта из электронной почты или с веб-страницы.
- Копирование скрипта через документ Microsoft Word или PowerPoint.
- Другие текстовые редакторы, например:
- Блокнот;
- vim;
- любой другой редактор скриптов PowerShell.
- Служебные программы редактирования текста, например:
- Get-Content / Set-Content / Out-File
- Операторы перенаправления PowerShell, такие как > и >> .
- sed / awk
- Программы передачи файлов, такие как:
- Веб-браузер при скачивании скриптов.
- Общий файловый ресурс.
Некоторые из этих средств работают с байтами, а не с текстом, но другие позволяют настраивать кодировки. В случаях, когда необходимо настроить кодировку, используйте те же параметры, что и в вашем редакторе, чтобы предотвратить возникновение проблем.
Другие ресурсы о кодировках в PowerShell
Существует несколько других достойных публикаций на тему кодировок и настройки кодирования в PowerShell:
Источник