Какова стандартная кодировка исходных файлов в visual studio 2017

Кажется, визуальная студия 2017 всегда сохраняет новые файлы как UTF8-BOM. Похоже, что это было не так с более ранними версиями visual studio, но я не мог найти никакой документации.

Также появилась опция "Расширенные параметры сохранения/кодирование", которая позволила изменить кодировку вновь сохраненных файлов, отсутствующих в VS2017.

Вопросы:

  • Все типы файлов, сохраненные с кодировкой UTF8-BOM в VS2017
  • Можно ли настроить кодировку для новых файлов в VS2017
  • Будет ли VS2017 изменять кодировку "старых" файлов, которые не имеют UTF8-BOM
  • Есть ли документация по этой теме

Ответ 1

  Также была опция "Дополнительные параметры сохранения\Кодировка", которая позволил изменить кодировку вновь сохраненных файлов, которая отсутствует в VS2017.

Эта функция уже существует! Вы можете сохранять файлы с определенной кодировкой символов для поддержки двунаправленных языков. Вы также можете указать кодировку при открытии файла, чтобы Visual Studio правильно отображал файл.

save a file with encoding

Сохранить файл с кодировкой

  1. В меню Файл выберите Сохранить файл как, а затем нажмите Раскрывающаяся кнопка рядом с кнопкой Сохранить. Дополнительные параметры сохранения появится диалоговое окно.
  2. В разделе "Кодировка" выберите кодировку для файла.
  3. По желанию, в конце строки выберите формат конца строки символов.

Все ли типы файлов сохранены в кодировке UTF8-BOM в VS2017

В моем случае VS хранит все файлы с кодировкой CodePage 1252.

Можно ли настроить кодировку для новых файлов в VS2017

Тем не менее, My Visual Studio версии 15.6.1, и некоторые люди имеют такую же проблему, как ваша в предыдущих версиях 2017 года, но они сказали "Мы исправили эту проблему, и она доступна в Visual Studio 2017 15.3"

Если не работает, для проектов C++ Ознакомьтесь с /utf-8 (установите для наборов символов Source и Executable значение UTF-8).

Будет ли VS2017 менять кодировку "старых" файлов, которые не имеют UTF8-BOM

По умолчанию Visual Studio обнаруживает метку порядка байтов, чтобы определить, находится ли исходный файл в кодированном формате Unicode, например, UTF-16 или UTF-8. Если метка порядка байтов не найдена, предполагается, что исходный файл закодирован с использованием текущей кодовой страницы пользователя, если только вы не указали кодовую страницу с помощью /utf-8 или параметра /source-charset. Некоторые люди столкнулись с проблемой, возникшей из файла .editorconfig, как показано ниже:

root = true

[*]
indent_style = tab
indent_size = 4
tab_width = 4
trim_trailing_whitespace = true
insert_final_newline = true
charset = utf-8 

Эта последняя строка кодировки, вероятно, делает это... но я не прошу 'utf-8-with-bom'!

Ответ 2

Вы можете использовать EditorConfig с свойством charset для определения кодировки исходных файлов в VS 2017.

Ответ 3

По-видимому, опция "Расширенные параметры сохранения/кодирования" была удалена из меню "Файл" из-за необычного использования. Это была причина, данная членом Visual Studio Team (см. Это).

Опция все еще существует, но вам нужно сделать несколько дополнительных кликов.

  1. В полосе меню перейдите в ФАЙЛ → Сохранить как
  2. Когда появится диалоговое окно "Сохранить файл", кнопка "Сохранить" имеет стрелку вниз. Нажмите на нее.
  3. Выберите Сохранить с кодировкой...

enter image description here

Как только вы сохраните файл в определенном формате (я считаю, что тот, который вы ищете, это Unicode (UTF-8 without signature) - Codepage 65001), Visual Studio должна теоретически не изменять его по прихоти.

Теперь здесь проблема, хотя, как только вы удаляете спецификацию, ни один читатель не может действительно знать со 100% уверенностью, что данный текстовый файл на самом деле является UTF-8. Это только от наблюдения за поведением, но если вы идете и сохраняете как с кодировкой... и выбираете
Unicode (UTF-8 without signature) - Codepage 65001 (который является UTF8 без спецификации), спецификация будет удалена..... однако, когда вы закрываете файл и снова открываете его, перейдите в Advanced Save Options еще раз, вы обратите внимание, что Visual Studio предположила, что текстовым форматом является CodePage 1252. Файл, конечно же, будет абсолютно корректным, поскольку он сопоставляет все возможные значения байтов с некоторым символом, но это может дать вам странные результаты в некоторых случаях.

Одна вещь, которую он не будет делать, добавляет обратно спецификацию (по крайней мере, я ее никогда не видел). Надеюсь это поможет.

Ответ 4

Проверьте расширение Fix File Encoding, которое запрещает Visual Studio 2017/2015/2013/2012 добавлять BOM к файлам UTF-8.

Обычно, когда вы редактируете файл UTF-8 в Visual Studio, он добавляет последовательность меток байтов (BOM) 0xEF, 0xBB, 0xBF в начало файла. Иногда это путает другие приложения, обрабатывающие файл. Вы можете выбрать кодировку вручную (File - Advanced Save Options... или File> Save As...> Save with Encoding...), но вам нужно делать это каждый раз, когда вы повторно открываете файл

Кроме того, это расширение ответит на большинство ваших вопросов.

Fix File Encoding автоматически определяет, когда файл UTF-8 открывается в Visual Studio и устанавливает его кодировку в UTF-8 без подписи. Если вы не отредактируете файл, он останется немодифицированным. Если вы отредактируете файл, он будет сохранен без спецификации.

Fix File Encoding позволяет вам настроить, какие файлы нужно кодировать на основе пути к файлу и расширения файла. По умолчанию из Visual Studio защищены только файлы.htm и.html.