Подтвердить что ты не робот

UTF-8 без спецификации

У меня есть файлы javascript, которые мне нужны для их сохранения в UTF-8 (без спецификации), каждый раз, когда я конвертирую их в правильный формат в Notepad ++, они возвращаются обратно в UTF-8 с BOM, когда я их открываю Visual Studio. Как я могу остановить VS2010 от этого?

Еще один вопрос: UTF-8 без подписи в Visual Studio так же, как UTF-8 без спецификации?

4b9b3361

Ответ 1

BOM или знак байтового заказа иногда довольно раздражает. Visual Studio не изменяет файл, если вы его не сохраните (как сказал Ханс).

И вот решение вашей проблемы: Если вы хотите сохранить файл с другими кодировками, выберите save as и продолжите кнопку сохранения в диалоговом окне файла и выберите "Сохранить с кодировкой". Или, если вы хотите полностью избавиться от этой настройки, просто откройте меню "Файл" и выберите "Дополнительные параметры сохранения", и там вы должны выбрать "UTF-8 без подписи" (и это также ответило на ваш последний вопрос:). Да "UTF-8 без подписи" такой же, как без спецификации.

Ответ 2

Я создал расширение Fix File Encoding, которое не позволяет Visual Studio 2010+ добавлять BOM к файлам UTF-8.

Ответ 3

Теперь с картинками.

  • Перейдите к FileSave As.

enter image description here

  1. Затем по кнопке "Сохранить" нажмите треугольник и нажмите Save with Encoding...

enter image description here

  1. Нажмите 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 сделайте следующее:

  1. Внизу справа выберите текущую кодировку enter image description here
  2. Из вариантов выберите Сохранить с последующим enter image description here
  3. Из вариантов выберите UTF-8 enter image description here

Ответ 10

UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter  sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);

Этот код создаст файл в UTF-8 без спецификации