UTF-8 без спецификации
У меня есть файлы javascript, которые мне нужны для их сохранения в UTF-8 (без спецификации), каждый раз, когда я конвертирую их в правильный формат в Notepad ++, они возвращаются обратно в UTF-8 с BOM, когда я их открываю Visual Studio. Как я могу остановить VS2010 от этого?
Еще один вопрос: UTF-8 без подписи в Visual Studio так же, как UTF-8 без спецификации?
Ответы
Ответ 1
BOM или знак байтового заказа иногда довольно раздражает. Visual Studio не изменяет файл, если вы его не сохраните (как сказал Ханс).
И вот решение вашей проблемы:
Если вы хотите сохранить файл с другими кодировками, выберите save as и продолжите кнопку сохранения в диалоговом окне файла и выберите "Сохранить с кодировкой". Или, если вы хотите полностью избавиться от этой настройки, просто откройте меню "Файл" и выберите "Дополнительные параметры сохранения", и там вы должны выбрать "UTF-8 без подписи" (и это также ответило на ваш последний вопрос:). Да "UTF-8 без подписи" такой же, как без спецификации.
Ответ 2
Я создал расширение Fix File Encoding, которое не позволяет Visual Studio 2010+ добавлять BOM к файлам UTF-8.
Ответ 3
Теперь с картинками.
- Перейдите к
File
→ Save As
.
![enter image description here]()
- Затем по кнопке "Сохранить" нажмите треугольник и нажмите
Save with Encoding..
.
![enter image description here]()
- Нажмите ok, чтобы перезаписать файл, затем из списка encodings find
UTF-8 Without signature
→ Нажмите OK
.
![enter image description here]()
Надеюсь, это сэкономит вам некоторое время.
Ответ 4
К сожалению, это не работает с файлами csproj. Нет опции "Advanced save", и даже если вы установили ее в "UTF-8 без подписи" для файла cs, файлы csproj все еще сохраняются с помощью спецификации. Если вы используете VSS, он все еще жалуется на файлы проекта.
Ответ 5
UTF-8 - "Сохранить как" (без подписи) По умолчанию - запрос на включение по умолчанию для UTF без подписи
VS 2017 изначально поддерживает EditorConfig, поэтому рекомендуемое решение - добавить файл .editorconfig
в базу кода и установить charset => utf-8
. Затем, как только вы сохраните файл, он будет сохранен как UTF-8 без спецификации.
Ответ 6
Для vs2010 С++ будут проблемы с UTF8 без спецификации, если исходные файлы содержат многобайтные символы (например, китайский).
Эти символы не будут распознаны правильно без спецификации, и это приведет к неудачному сбору.
Ответ 7
Недавно я нашел этот крошечный инструмент командной строки, который добавляет или удаляет спецификацию для произвольных файлов в кодировке UTF-8: UTF BOM Utils (новая ссылка на github)
Небольшой недостаток, вы можете скачать только простой C++ исходный код. Вы должны создать make файл (например, с помощью CMake) и скомпилировать его самостоятельно, двоичные файлы на этой странице не предоставляются. Однако для разработчика программного обеспечения это не должно быть проблемой.
Ответ 8
Даже с решением Dave81 сообщество Visual Studio 2015 по-прежнему возвращало мой файл в UTF8-BOM каждый раз, когда я сохранял этот html файл.
Когда я создал этот html файл, я щелкнул правой кнопкой мыши по проекту и выбрал "Добавить", а затем добавил файл HTML.
По умолчанию Visual Studio будет включать в себя < meta charset = "utf-8" /" > в вашем файле HTML.
Просто удалив тег, а затем применив решение Dave81, проблема на данном этапе исчезла.
Кажется, что Visual Studio анализирует ваш html файл, и когда он видит этот тег, он преобразует файл в UTF8-BOM без учета исходного формата файла (UTF8 без спецификации).
** Я бы сделал комментарий прямо под решением Dave81, но у меня не было достаточно очков для этого...
Ответ 9
Для кода Visual Studio сделайте следующее:
- Внизу справа выберите текущую кодировку
![enter image description here]()
- Из вариантов выберите Сохранить с последующим
![enter image description here]()
- Из вариантов выберите UTF-8
![enter image description here]()
Ответ 10
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);
Этот код создаст файл в UTF-8 без спецификации