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

Как исправить "Байт-код заказа, найденный в файле UTF-8"

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

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

Значок предупреждающего байта, найденный в файле UTF-8.

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

  • Загрузите и установите Notepad ++

  • Откройте файл с помощью Notepad ++

  • В меню выберите "Кодирование" и установите его "Кодировать в UTF-8 без спецификации"

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

Ответ 3

В Linux:

Откройте файл с Geany.

В меню " Документ" снимите флажок " Запись спецификации Юникода".

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

Ответ 4

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

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

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

Ошибка: Stray end tag head.

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

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

И весь документ можно увидеть без DOCTYPE, когда BOM или две BOMS занимают первую строку, а DOCTYPE - во второй строке, с сообщением, аналогичным этому:

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

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

Ошибка: блуждающий doctype.

Ошибка: Stray start tag html.

Ошибка: Stray start tag head.

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

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

Ошибка: атрибут http-equiv не разрешен в метатете элементов в этой точке.

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

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

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

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

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

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

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

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

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

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

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

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

Ошибка: Stray end tag head.

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

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

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

И поток сообщений в консоли разработчика IE F12:

HTML1527: ожидается DOCTYPE. Рассмотрим добавление допустимого типа HTML5: "<! DOCTYPE html > ".

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

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

HTML1503: Неожиданный стартовый тег. HTML1512: Непревзойденный конечный тег.

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

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

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

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

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