Сен
5

BOM кроссбраузерности не друг

BOM кроссбраузерности не друг

При создании сайта uvcenter.ru возникла проблема кроссбраузерности.
В Google Chrome и Firefox всё отображалось как надо, но в Опере и IE дела обстояли плохо – некоторые блоки отказывались стоять на своих местах и убегали кто куда.
Проверив код на валидность c помощью validator.w3.org, я особое внимание обратил на ошибку
Line 1, Column 0: character “....” not allowed in prolog.

Валидатор подсказал, где собака порылась:
Byte-Order Mark found in UTF-8 File.
The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browsers. You may want to consider avoiding its use until it is better supported.

Что в переводе с буржуйского означает, что в коде найден идентификатор утф-кодировки Unicode Signature (BOM — Byte-Order Mark).
А это как известно, вызывает проблемы в некоторых текстовых редакторах и старых браузерах.
Оказывается, когда сохраняешь документ в UTF-8 через обычный блокнот, в начало дописывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. Byte Order Mark, BOM), который позволяет определить формат представления Юникода в текстовом файле. На него-то и ругается валидатор.

Решение проблемы:

1 способ. Использовать программу UTF8-bom-remover (скачать).

Открываем её, выбираем директорию со скриптами, устанавливаем тип файлов, по которым будет выполнятся поиск и жмём на «Обработать».
Снизу будет написано сколько файлов проверено и сколько поправлено.
Если интересно какие файлы были исправлены, до обработки ставим галку в «отчет», который сохраняется в папке поиска.

2 способ. Выковырять эту BOM-загогулину из файла с помощью Notepad++ (скачать|портабельная версия)

Открываем в нём файл, выбираем «Format»->»Encode in UTF-8 without BOM» («Кодировка» -> «Кодировать в UTF-8 без BOM») и пересохраняем.

После исправления скриптов моя проблема была решена.

Связанные записи

Комментировать

  • Спасибо!Всю голову сломал,как сделать верстку валидной!)

  • А у меня не выходит. Делала по второму способу… как было 7 ошибок так и осталось….

    • Именно таких ошибок:
      Line 1, Column 0: character “….” not allowed in prolog. ?

  • [...] Если случилось так, что невозможно зайти в админ-панель Джумлы, хотя логин и пароль верны — страница входа просто перезагружается и не выдает никаких ошибок, то скорее всего какие-то скрипты были отредактированы в простом блокноте и сохранены в кодировке «UTF», а не в «UTF без BOM». Решение этой проблемы подробно расписано в статье BOM кроссбраузерности не друг. [...]

  • Спасибо! Очень помогло!

  • А у меня с BOM валидацию проходило, а без него нет :) . Так что с ним у меня выдает предупреждение, но зато валидация отличная.