Как заставить Visual Studio сохранять все файлы как UTF-8 без подписи на уровне Project или Solution?

Я пытаюсь настроить VS С++-проект таким образом, чтобы его можно было скомпилировать gcc в Linux. Кажется, что мне нужны файлы, которые должны быть закодированы как UTF-8 без подписи (что не является значением по умолчанию). Можно ли установить что-то на уровне проекта или решения, чтобы после того, как кто-то открыл решение и сохранил свои изменения, файлы по-прежнему остаются UTF-8?

Обратите внимание, что это открытый проект, поэтому я не могу попросить всех изменить настройки своей Visual Studio.

Ответ 1

Visual Studio удалит спецификацию, выбрав "Сохранить как..." и выбрав "Сохранить с кодировкой..." и выбрав "UTF-8 без подписи". Как только он будет сохранен без спецификации, VS не добавит его снова. К сожалению, нет способа сделать это по умолчанию для всех файлов в VS и должен выполняться вручную каждый раз, когда файл сохраняется в первый раз.

Если у вас установлен Cygwin, вы можете пакетно изменить существующие файлы с помощью этого небольшого script:

find . -name "*.cpp" -exec vim -c "set nobomb" -c wq! {} \;

Или, если у вас нет Cygwin, но у вас есть vim, вы можете использовать этот пакет script.

for %%f in (*.cpp) do call vim -c "set nobomb" -c wq! %%f

Обратите внимание, что это делается в пакете script, кажется, мне нужно нажать [return] каждый раз, когда выходят vim, что не соответствует версии cygwin.

Ответ 2

в vs2010 должно быть хорошо, чтобы установить глобально - см. UTF-8 без спецификации

получили только vs express со мной в mo, и, естественно, у этого нет этого. Вздох.

Ответ 3

Не похоже, что это параметр, который вы можете поместить в свойствоPage. Самое лучшее, что я могу придумать, - создать простой script (как в этой ссылке), который запускается как шаг предварительной сборки и перезаписывает файлы. Это, вероятно, выполнит эту работу до тех пор, пока script будет сохранен с проектом, но может быть очень раздражающим.

Ответ 4

Похоже, что Visual Studio угадывает кодировку символов на основе содержимого файла. Если вы помещаете стандартный заголовок комментария в каждый файл, и этот комментарий включает в себя однозначный символ UTF-8, VS должен поступать правильно. Дополнительным преимуществом является то, что некоторые утилит Linux также распознают файл как явно UTF-8.

Ответ 5

Как я это сделал:

  • написал небольшое приложение, которое вызвало молчащий процесс с помощью Notepad. Просто обработать в оболочке (с использованием System.Diagnostics)
  • создал список файлов и файл foreach, открытый и сохраненный как utf-8

потребовалось 20 минут, чтобы написать 1. и несколько минут исполнения.
Я не могу думать об открытии и сохранении всех 300 файлов вручную