Как заставить 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 файлов вручную