Задать вопрос
Все статьи / Полезная информация / BOM-символы в кодировках: зачем они нужны и как их удалить
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

BOM-символы в кодировках: зачем они нужны и как их удалить

Если вы когда-либо работали с текстовыми файлами при разработке сайтов, написании программ или обработке данных, наверняка сталкивались со странными символами в начале файла или ошибками, которые мешали корректному отображению или работе вашего кода. Чаще всего причина таких проблем — так называемые BOM-символы.

Что такое BOM 

BOM (Byte Order Mark) — это специальный невидимый символ, который используется для указания порядка байтов в текстовых файлах с кодировками Unicode, например, UTF-8, UTF-16 или UTF-32. 

Для UTF-8 он выглядит как набор из трех байтов: EF BB BF (в шестнадцатеричном виде). Именно они иногда отображаются как непонятные символы (например, ) в начале файлов.

Изначально BOM помогал текстовым редакторам и другим программам правильно распознавать кодировку и корректно интерпретировать файл. Однако современные приложения и редакторы могут самостоятельно распознавать кодировку, поэтому необходимость в нем практически отпала. 

Практические трудности из-за BOM

Сегодня BOM чаще становятся источником проблем, чем приносят пользу. И вот почему:

  • Браузеры могут неправильно интерпретировать HTML- или PHP-файлы с BOM, выводя нежелательные символы в начало страницы или вызывая ошибки, вроде: «Warning: Cannot modify header information — headers already sent by (output started at …».
  • Скрипты и программы, которые ждут стандартный текстовый файл без лишних символов, могут некорректно обрабатывать данные или выдавать ошибки при обнаружении BOM. 
  • Даже небольшие изменения, включая появление или удаление BOM, воспринимаются системой как глобальные изменения файла, что затрудняет отслеживание конкретных изменений в коде.

Особенно к наличию BOM чувствительны веб-приложения и API, которым очень важна строго определенная структура и кодировка входящих данных.

Как обнаружить BOM-символы

Обнаружить BOM можно несколькими способами:

  1. С помощью текстовых редакторов. Sublime Text, Visual Studio Code, Notepad++ автоматически показывают наличие BOM и предлагают его удаление.
  2. С помощью консоли (Linux/MacOS). Для этого достаточно выполнить:
hexdump -C file.txt | head

Где file.txt – ваш файл. 

Если в начале вывода вы видите байты ef bb bf, значит файл содержит BOM.

Как избавиться от BOM-символов

Есть два простых и проверенных способа, которые помогут вам удалить BOM-символы:

Способ 1. Через текстовый редактор Notepad++

  1. Откройте файл в Notepad++.
     
  2. В верхнем меню выберите «Кодировки».
     
  3. Нажмите «Кодировка в UTF-8».



    Важно! В старых версиях Notepad++ была опция «Кодировать в UTF-8 (без BOM)». Если у вас она есть, выберите ее.   
     
  4. Сохраните файл.
     

Способ 2. С помощью командной строки на сервере 

1. Подключитесь к серверу через SSH.

2. Найдите все файлы с BOM при помощи команды:

find -type f | while read file; do [ "`head -c3 -- "$file"`" == $'\xef\xbb\xbf' ] && echo "found BOM in: $file"; done

3. Удалите лишние символы из файлов:

find . -type f -exec sed 's/^\xEF\xBB\xBF//' -i.bak {} \; -exec rm {}.bak \;

Как предотвратить появление BOM

Лучший способ — сразу настраивать редакторы и инструменты на работу с кодировкой «UTF-8 без BOM». Так вы сможете избежать проблем на самых ранних этапах работы с файлами.

Заключение

Хотя изначально BOM был полезен, сегодня он может принести больше вреда, чем пользы. Поэтому мы рекомендуем всегда сохранять текстовые файлы в кодировке UTF-8 без BOM. Также стоит регулярно проверять кодировку своих файлов, особенно перед их загрузкой на сервер. Так вы избежите неприятных сюрпризов и сэкономите время на поиске и исправлении ошибок.

Предыдущая статья
BitrixVM и BitrixEnv: в чем разница
Следующая статья
Elementor — простой способ создать сайт без специалиста