Символ #65279 — проблема верстальщика

В роли символа №65279 —  , который и был изначально в названии поста, но и там он умудрился “исчезнуть”.
Символ  обладает рядом очень весёлых свойств, которые каждый встретивший его верстальщик непременно запомнит, если не провтыкает ))
Всё началось с того, что я писал дизайн под свой новый проект. Для красоты и юзабилити надо было, что бы сайт “прилипал” к верхнему краю браузера, но он не лип, ни в какую. Не буду описывать как я эти 2 недели его пытался отловить, перейду сразу к тому что он такое есть и что в этим делать.
Символ  не что иное, как BOM (Byte Order Mark) который находится в начале файла с кодировкой UTF-8, и возможно некоторых других юникодных кодировок. Служит указателем порядка байтов и может указывать, какой кодировкой Unicode закодирован текст. Кодировка Unicode может использовать 16-разрядные или 32-разрядные числа и приложение должно знать, как дальше с ними поступать. Поэтому потребность в маркере последовательности байтов возникает при обмене документами.
Как особенность, в файле он не видим, места не занимает вообще (но выделить его всё же можно), так же, его не видно при включении показа непечатаемых символов.
Во всех браузерах, кроме Оперы, действует как перенос строки. Опера же, на него не реагирует. При чтении этого файла, очень вероятно, что первым символом будет прочитан не текст, а BOM.
Решение уже очевидно — нужно избавится от BOM. Я избавился от него пересохранив необходимые файлы с помощью Notepad++ в UTF-8 без BOM.

СКРИПТ PHP
Если у Вас в проекте много файлов, в которых есть BOM, тогда можно процесс удаления символа  автоматизировать. Есть скрипт, который перебирает рекурсивно все файлы в заданом каталоге и под каталогах и убирает BOM.

ВНИМАНИЕ Перед запуском скрипта, сделайте резервную копию файлов!
Создайте файл BOM.php, поместите данный код туда. Загрузите файл в корневую папку и запустите его. Скрипт определит, в каких файлах есть BOM символ и удалит его от туда.

Share this post:

Recent Posts

Leave a Comment