Visual studio сохранение в utf 8

Обновлено: 11.05.2024

Есть ли способ заставить студию сохранять новые файлы в utf8 по умолчанию?

Options\Environment\Documents\Save documents as unicode blablabla не работает, один фиг кирилицу сохраняет в долбаный Windows-1251.

Единственный способ пока нашёл — установить системную локаль нерусскую, тогда файлы с кирилицей сохраняются в юникоде, но это вообще извращение.

Блин, даже блокнот и тот запоминает как был сохранен последний файл и новые файлы сохраняет также.

Здравствуйте, Serge, Вы писали:

S>Есть ли способ заставить студию сохранять новые файлы в utf8 по умолчанию?

На вопрос решение не подскажу, но если новые файлы создаются из шаблонов (VC/vcprojectitems) и их подсунуть туда изначально в нужной кодировке, студия так же будет себя вести?

Re[2]: Сохранять файлы в utf8 умолчанию, Visual Studio 2013

Здравствуйте, flаt, Вы писали:

F>Здравствуйте, Serge, Вы писали:

S>>Есть ли способ заставить студию сохранять новые файлы в utf8 по умолчанию?

F>На вопрос решение не подскажу, но если новые файлы создаются из шаблонов (VC/vcprojectitems) и их подсунуть туда изначально в нужной кодировке, студия так же будет себя вести?

Не знаю откуда они берутся, в той vcprojectitems, которая в c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\ лежат файлы с нулевым размером а папки в c:\Users\*\Documents\Visual Studio 2013\ пусты, да и не всегда создаёш из шаблонов, наприvер перетаскиваешь файл из другого проекта, вносишь коммент на русском — ожидаешь что он сохранится в юникоде (в опциях студии ведь это явно указано) — а получаешь ansii 1251

Re[3]: Сохранять файлы в utf8 умолчанию, Visual Studio 2013

Здравствуйте, Serge, Вы писали:

S>Не знаю откуда они берутся, в той vcprojectitems, которая в c:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\ лежат файлы с нулевым размером а папки в c:\Users\*\Documents\Visual Studio 2013\ пусты, да и не всегда создаёш из шаблонов, наприvер перетаскиваешь файл из другого проекта, вносишь коммент на русском — ожидаешь что он сохранится в юникоде (в опциях студии ведь это явно указано) — а получаешь ansii 1251

Посмотри вот тут: c:\Program Files (x86)\Microsoft Visual Studio ХХ.0\Common7\IDE\ItemTemplates\

Re[2]: Сохранять файлы в utf8 умолчанию, Visual Studio 2013

Здравствуйте, VTT, Вы писали:

VTT>есть расширение ForceUTF8 with BOM

Судя по описанию оно тоже смотрит в системную локаль.

Saving files with encodings other than UTF-8 and default encoding (based on system locale)


ps Не понимаю, нафик эти финты с системной локалью, почему просто не сохранять в той кодировке которую явно указал пользователь, как все редакторы. Re[3]: Сохранять файлы в utf8 умолчанию, Visual Studio 2013

Saving files with encodings other than UTF-8 and default encoding (based on system locale) that has no BOM may cause file losing some characters.

Это предупреждение о том, что сохранение файлов с кодировкой, отличной от UTF-8 или кодировки по-умолчанию (системной локали), у которых нет BOM, может привести к потере некоторых символов.
Например: если есть файл в кодировке Windows-1252 (western), а системная локаль стоит Windows-1251, то сохранив его при помощи этого расширения вы получите файл с крякозябрами.

А вообще расширение делает то, что вам надо: все автоматом сохраняется в UTF-8.

Если хочется явно указывать как сохранять, то для этого есть диалог Advanced Save Options. В нем можно еще EOL настроить.

Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым. Re[4]: Сохранять файлы в utf8 умолчанию, Visual Studio 2013

Здравствуйте, VTT, Вы писали:

VTT>Не стоит обрезать фразы:

Да точно, пардон недоглядел, просто расширения студии сразу настораживают, у меня единственное расширение — visual assist, из-за него в основном проблемы, его всплывающая подсказка в упор не воспринимает символы выше 128.

VTT>Если хочется явно указывать как сохранять, то для этого есть диалог Advanced Save Options. В нем можно еще EOL настроить.

Так и делаю, при первой миграции проекта приходится матерится, но потом привыкаешь

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

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

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

save a file with encoding

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

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

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

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

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

изменит ли VS2017 кодировку "старых" файлов, у которых нет В UTF8 СПЕЦИФИКАЦИИ

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

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

по-видимому, опция " Advanced Save Options\Encoding "была удалена из меню" Файл " из-за необычного использования. Это была причина, приведенная членом команды Visual Studio (посмотреть этот).

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

  1. в полосе меню выберите Файл - > Сохранить как
  2. при появлении диалогового окна сохранить файл кнопка Сохранить имеет стрелку вниз. Щелкнуть его.
  3. выберите Сохранить с Кодирование.

enter image description here

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

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

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

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

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

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

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

Также была опция «Advanced Save Options Encoding», которая позволяла изменить кодировку вновь сохраненных файлов, отсутствующую в VS2017.

4 ответа

Также была опция «Advanced Save Options Encoding», которая позволяла изменить кодировку вновь сохраненных файлов, отсутствующую в VS2017.

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


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

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

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

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

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

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

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

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

Видимо, опция «Дополнительные параметры сохранения Кодировка» была удалена из меню «Файл» из-за нечастого использования. Это была причина, указанная участником Visual Studio Team ( см. Это ).

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

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


Также это расширение ответит на большинство ваших вопросов.

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

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

Чтобы установить требуемую кодировку для сохранения проектов в Visual Studio Code, например, UTF-8, нужно зайти в пункт меню программы Файл / Параметры / Параметры (Ctrl + ,), где найти аттрибут files.encoding.

Чтобы установить кодировку UTF-8, нужно указать:

Создаваемые файлы будут иметь кодировку utf8 без bom.

Рис.1. Изменение кодировки файлов на UTF8 в Visual studio code


Сразу хочу оговориться, что меня не интересуют команды типа setlocale(); SetConsoleCP(); и подобные. Если вы хотите предложить вариант как-то связанный с программным исправлением (с добавлением строк кода по исправлению кодировки к каждой программе), пожалуйста, не надо.

Меня интересует, как изменить параметр "Текущая кодовая страница", который сейчас выставлен в свойствах консоли на 866 ?
И желательно изменить один раз, чтобы он выставлялся по умолчанию.


1 ответ 1

В конкретном сеансе командной оболочки, выполнением команды chcp 1251 . Таким образом, можно изменить действие при запуске приложения (в разделе "Отладка" в свойствах проекта) на c:windowssystem32cmd.exe /k chcp 1251 && $(TargetPath) для достижения требуемого эффекта. Но тогда отладчик будет отлаживать cmd.exe, а не нашу программу 🙁

Для конкретного консольного приложения через параметр реестра HKCUConsole(путь к приложению)CodePage (REG_DWORD).

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

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

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

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

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

При написании программ в среде Visual studio иногда возникает необходимость вывода текста на русском языке. Казалось бы, что тут сложного? Берёшь и выводишь! А вот нет, иначе бы не было кучи форумов и страничек в интернете с этой проблемой.
А проблема заключается в кодировке, причём все сайты пишут работающие способы, но, к сожалению, далеко не у всех. В этой статье мы расскажем вам о том, как действительно нужно исправлять эту проблему.

Итак, вы написали программу, в которой решили вывести строку русскими буквами, например, "Русский язык в консоли!". Вы запускаете программу, но вместо заветной строки видите там "кракозябры"! Что же делать?

Программа, выводящая русскую строку в visual studio

В результате видим кракозябры

Программа, выводящая русскую строку в visual studio

А возможный результат может выглядеть так:

Результат может быть как корректным, так и кракозябристым

Результат может быть как корректным, так и кракозябристым

Запустим её, если русский язык уже выводится - поздравляем! Проблема решена! Если нет, то идём дальше.

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

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

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

Выбираем кодировку Кириллица (Windows) - кодовая страница 1251

Выбираем кодировку Кириллица (Windows) - кодовая страница 1251

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

Нужная кодировка - Кириллица (Windows) - кодовая страница 1251

Нужная кодировка - Кириллица (Windows) - кодовая страница 1251

Запустим программу вновь и теперь русский язык будет корректно выводиться!

Программа запустилась и русский язык выводится

UPD: Ещё один способ заставить работать русский язык

Если ничего из вышеперечисленного не помогло, значит проблема в кодировке самой консоли. А её можно изменить с помощью команды system("chcp 1251"); , то есть программа будет выглядеть так:

Фото Перминова Андрея, автора этой статьи

Выпускник МГУ им. М.В. Ломоносова

Programforyou — это сообщество, в котором Вы можете подтянуть свои знания по программированию, узнать, как эффективно решать те или иные задачи, а также воспользоваться нашими онлайн сервисами.

Также появилась опция «Advanced Save Options \ Encoding», которая позволяла изменить кодировку вновь сохраненных файлов, отсутствующую в VS2017.

4 ответа

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

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

Обычно, когда вы редактируете файл UTF-8 в Visual Studio, он добавляет последовательность меток порядка байтов (BOM) 0xEF, 0xBB, 0xBF в начало файла. Иногда это смущает другие приложения дальнейшей обработки файла. Вы можете выбрать кодировку вручную (Файл - Дополнительные параметры сохранения . или Файл> Сохранить как . > Сохранить с кодировкой . ), но вам нужно делать это каждый раз, когда вы снова открываете файл

Также это расширение ответит на большинство ваших вопросов.

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

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

К сожалению, это длинный комментарий Ника, поэтому я использую другой:

VS сохраняет все файлы исходного кода (.cpp, .cs, .h и т. Д.) И веб-файлы (.htm (l), .css, .xml) в UTF-8 с спецификацией (с подписью в MS жаргон ) .

Однако VS сохраняет текстовые файлы , созданные VS, в кодовой странице локальные настройки, например кодовая страница 1252 для западноевропейских культур. VS достаточно умен, чтобы обнаружить символы, которые не могут быть закодированы в кодовая страница по умолчанию и предложит вам кодировать в UTF-8. визуальный Studio автоматически сохранит в UTF-8, конечно, с BOM, если вы установите флажок «Сохранить документы как Unicode, если данные не могут быть сохранены в кодовая страница »в диалоговом окне« Инструменты / Параметры / Среда / Документы ».

Вы можете переопределить кодировку для каждого отдельного файла, используя «Сохранить Как ", но вы не можете переопределить кодировки по умолчанию в VS Options

Судя по всему, опция «Advanced Save Options \ Encoding» была удалена из меню «File» из-за необычного использования. Это было причиной, приведенной членом команды Visual Studio (см. это).

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

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

enter image description here

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

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

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

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