techstop-ekb-ru, Екатеринбург, Россия

Разбираемся и решаем проблему UTF-8 Unicode BOM

BOM, Byte Order Mark, код EF BB BF в начале файла Notepad, сохраненного в кодировке Unicode UTF-8 и большая проблема для вебмастеров, парсеров и валидаторов исходного кода.

Подробнее о BOM рассказано в Wikipedia ... Краткая же суть - это специальная метка в текстовом файле для Notepad Windows для определения файлов в кодировке Unicode UTF-8. Изучим этот код подробнее ...

Создадим в блокноте обычный текстовый файл в кодировке ANSI ...
Notepad : ( пусто, ничего нет ... )
WinHex : ( пусто, ничего нет ... )

Сохраним этот файл в кодировке UTF-8 ...
Notepad : ( пусто, ничего нет ... )
WinHex : EF BB BF (невидимый, неотображаемый в блокноте код)

Используя WinHex можно удалить EF, и BB ... Но, удалить BF нельзя - "блок вмещает весь файл" ... Однако, сейчас это уже не UTF-8 файл, а файл с крякозяблой и при попытке сохранить его - пытается сохраниться как ANSI ...

Снова создадим пустой файл и сохраним его в кодировке UTF-8, напечатав внутри файла контрольное слово : Test ...
Notepad : Test
WinHex : EF BB BF 54 65 73 74

Теперь WinHex может удалить весь блок EF BB BF ... Однако, без этого блока файл снова не UTF-8 и пытается сохраниться как ANSI ...

Усложним задачу ... Снова создадим и сохраним файл в кодировке UTF-8 и добавим (через пробел) контрольные слова : Test и Привет! ...
Notepad : Test Привет!
WinHex : EF BB BF 54 65 73 74 20 D0 9F D1 80 D0 B8 D0 B2 D0 B5 D1 82 21

Удаляем при помощи WinHex весь блок EF BB BF, открываем файл в блокноте и пытаемся сохранить - файл пытается сохраниться как UTF-8, даже при отсутствии BOM ... Notepad прозрел и увидел Unicode внутри файла ...

Выводы :
- Пока файл содержит символы в кодировке Unicode - он будет интерпритироваться блокнотом как UTF-8 ;
- Просмотр текста файла не влияет на BOM ... Но, как только файл был изменен и сохранен - код EF BB BF будет повторно добавлен в начало файла. По умолчанию, файл будет сохраняться в той кодировке в которой он был открыт (определен), то есть UTF-8 (к примеру) ;
- Если конечный файл был собран из нескольких UTF-8 файлов (например, методом коннектации или TYPE) - столько же раз код BOM : EF BB BF будет добавлен в содержимое файла. Однако, программы по удалению кода будут удалять только BOM код в начале файла (первое вхождение), так как далее этого кода не может быть по определению - но он есть! И будет трепать нервы всем, кто попытается прочитать html или php созданный на основе этого файла ...

Теперь, когда вы знаете как это устроено и работает - вы знаете как с этим бороться ...

21:36 21.02.2017

Поделиться ссылкой :
Отзыв / Диалог : Страница сайта на Facebook Страница сайта на Instagram Страница сайта в Twitter Страница сайта в VK

Интересы : Автомобили Программы Диагностика Тюнинг Статьи Погода Досуг Компьютер Радио ...
И еще много разной информации : Фильмы Музыка Игры Трекер / Tracker Трекер / Торрент Пир, Сид / Torrent

Работа : авто / перевозки, контейнерные грузоперевозки.

Диагностика : автомобилей и грузовиков для друзей / питик (500) / Екатеринбург, Космонавтов / Артинская .

Быстрый поиск по сайту :


Главная / разделы сайта


© techstop-ekb.ru / Екатеринбург / 2018