Как исправить предупреждение о проверке байтового порядка в файле UTF-8 - PullRequest
38 голосов
/ 31 марта 2010

У меня есть страница xhtml, проверяемая в строгом формате xhtml - но я получаю это предупреждение, которое пытаюсь понять - и исправляю.

Просто, как мне найти этот ошибочный «Порядок байтов». Я редактирую свой файл с помощью Visual Studio - не уверен, поможет ли это.

Предупреждение Обнаружена метка порядка байтов в файле UTF-8.

Известно, что Unicode Byte-Order Mark (BOM) в кодированных файлах UTF-8 вызывает проблемы для некоторых текстовых редакторов и старых браузеров. Возможно, вы захотите отказаться от его использования, пока он не станет лучше поддерживаться.

Ответы [ 5 ]

46 голосов
/ 31 марта 2010

Пространственная часть вашего вопроса проста: метка порядка байтов (BOM) будет в самом начале файла.

При редактировании файла перейдите к File | Advanced Save Options..., и вы должны найти раскрывающийся список «Кодировка» (вместе с раскрывающимся списком «Концы строк»). Возможно, он настроен на использование «Unicode (UTF-8 с подписью) - кодовая страница 65001». Если вы прокрутите немного вниз, вы можете найти «Юникод (UTF-8 без подписи) - Кодовая страница 65001». Это должно сделать это (если вы хотите). Как указывает предупреждение, некоторые системы могут быть сбиты с толку спецификацией файла UTF-8.

См. Также эту заметку в разделе часто задаваемых вопросов по Unicode о файлах BOM и UTF-8. У него нет никакой функции, кроме как объявить, что файл, по сути, является UTF-8. В частности, это не влияет на порядок байтов (основная причина, по которой у нас есть спецификации), потому что порядок байтов в UTF-8 фиксирован.

21 голосов
/ 16 декабря 2013

Вот как я это исправил:

  1. Скачать и установить Блокнот ++

  2. Открыть файл с помощью Блокнота ++

  3. В меню выберите «Кодировка» и установите для него значение «Кодировать в UTF-8 без BOM»

  4. Сохраните файл, и спецификация исчезнет.

3 голосов
/ 27 августа 2018

Если кто-то использует Visual Studio и видит раздражающую красную точку на битбакете в 2018 году, просто перейдите в Visual Studio в «Файл» -> «Файл.cshtml Сохранить как ...» и выберите «Сохранить с кодированием ...»:

Save with encoding

Затем появится всплывающее окно, чтобы вы могли изменить кодировку, попробуйте просмотреть весь список до тех пор, пока не увидите «Unicode (UTF-8 без подписи) - кодовая страница 65001»:

enter image description here

После этого просто перезапишите файл и загрузите его в репозиторий, и спецификация исчезнет.

Надеюсь, это поможет. Лео.

0 голосов
/ 27 мая 2016

Спецификация иногда располагается внутри текста, а не в начале - если файл был собран некоторое время php из других файлов, используя, например, include_once () . Чтобы удалить его, удалите область между хотя бы одним символом до спецификации и хотя бы одним знаком после спецификации (на всякий случай). Положение спецификации может быть найдено в F12 Developer Tools Internet Explorer и, возможно, Edge. Он визуализируется как черный бриллиант / ромб .

Visual Studio и WebMatrix могут сохранять файлы с подписью или без нее (в начале).

Спецификация вызывает ошибки во время проверки (https://validator.w3.org/#validate_by_upload) или в консолях - может рассматриваться как потерянный элемент без , если он явно присутствует!:

Ошибка: заголовок паразитного конца.

как второй , когда существует только один и все верно:

Ошибка: начальное тело тега замечено, но элемент того же типа уже был открыт.

И весь документ можно увидеть без DOCTYPE, когда спецификация или две спецификации занимают первую строку, а DOCTYPE находится во второй строке, с сообщением, похожим на это:

Ошибка: обнаружены непробельные символы, но сначала не отображается тип документа. Ожидаемый, например <! DOCTYPE html>.

Ошибка: в заголовке элемента отсутствует обязательный экземпляр дочернего элемента название.

Ошибка: случайный тип документа.

Ошибка: начальный тэг html.

Ошибка: начальная метка начального шага.

Ошибка: имя атрибута не разрешено для мета элемента в данный момент.

Ошибка: в элементе meta отсутствует одно или несколько из следующих атрибуты: itemprop, свойство.

Ошибка: на данном этапе мета-элемент не разрешен для мета-элемента.

Ошибка: в элементе meta отсутствует одно или несколько из следующих атрибуты: itemprop, свойство.

Ошибка: имя атрибута не разрешено для мета элемента в данный момент.

Ошибка: в элементе meta отсутствует одно или несколько из следующих атрибуты: itemprop, свойство.

Ошибка: в ссылке на элемент отсутствует свойство обязательного атрибута.

Ошибка: имя атрибута не разрешено для мета элемента в данный момент.

Ошибка: в элементе meta отсутствует одно или несколько из следующих атрибуты: itemprop, свойство.

Ошибка: имя атрибута не разрешено для мета элемента в данный момент.

Ошибка: в элементе meta отсутствует одно или несколько из следующих атрибуты: itemprop, свойство.

Ошибка: в данный момент имя атрибута не разрешено для мета элемента.

Ошибка: в элементе meta отсутствует одно или несколько из следующих атрибуты: itemprop, свойство.

Ошибка: заголовок элемента не допускается как дочерний элемент тела в этом контекст. (Подавление дальнейших ошибок из этого поддерева.)

Ошибка: стиль элемента не допускается как дочерний элемент тела в этом контекст. (Подавление дальнейших ошибок из этого поддерева.)

Ошибка: головка метки с паразитным концом.

Ошибка: начальное тело тега замечено, но элемент того же типа уже был открыт.

Неустранимая ошибка: невозможно восстановить после последней ошибки. Любые дальнейшие ошибки будут быть проигнорированным.

(https://validator.w3.org/#validate_by_uri)

И поток сообщений в консоли IE F12 Developer Tools:

HTML1527: ожидается DOCTYPE. Попробуйте добавить действительный тип документа HTML5: "<! DOCTYPE html>".

HTML1502: неожиданный DOCTYPE. Разрешен только один DOCTYPE, и он должен встречаться перед любыми элементами.

HTML1513: Найден дополнительный тег "". Для каждого документа должен существовать только один тег "".

HTML1503: неожиданный начальный тег. HTML1512: несоответствующий конечный тег.

Все вызвано одной спецификацией в начале. И отладчик показывает один черный ромб в первой строке.

Файлы, сохраненные с подписью, но не собранные php, не вызывают таких ошибок, а черные бриллианты не видны в отладчике IE. Так что, возможно, PHP преобразовывает спецификацию как-то. Похоже, что основной файл php должен быть сохранен с подписью, чтобы увидеть это.

Эти странные символы появляются в начале и / или на границах файлов, объединенных с помощью include_once (), и не видны, когда файлы сохраняются ранее без подписи. Вот почему это указывает на участие спецификации.

Я заметил это все позавчера, когда начал конвертировать мой сайт в HTML5 и проверять.

Спецификация также может создать небольшой отступ в начале строки. Два файла, содержащие одинаковый текст, но один с отступом.

0 голосов
/ 24 февраля 2015

В Linux :

Откройте файл с помощью Geany .

В меню " Документ " снять отметку " Запись Unicode BOM ".

Сохранить файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...