Лого на страниците (малко).

Заглавна страница > Четива > Четива за глотометрията > cream в режим „expert“ > 20. BOM (Byte Order Mark)

 

Александър Иванов

cream в режим „expert“

20. BOM (Byte Order Mark)

Ако не сте още погледнали Текстов файл, бинарен файл, разумно е сега да го погледнете — там обяснявам какво е BOM.

Когато обработвате текст с многобайтово кодиране в Unicode (UTF-32, UTF-16, UTF-8 и подобни), може да инструктирате vim/cream да записва в началото на файла маркер за реда на байтовете:

:set bomb

(Ама че шегаджии!)

Както и да го инструктирате да не го записва:

:set nobomb

За филолога е по-удобно да работи без този маркер в cream, защото, когато се използват външни програми (филтри), в първия ред на текста в начална позиция се появява <feff> или нещо подобно — тоест BOM се появява като низ и това пречи. Впрочем в съвременните сглобки на Linux се използва кодиране UTF-8 и също се препоръчва да не се използва BOM при записа на текстовите файлове: точно по тази причина — системните програми „не знаят“ да отстраняват при работата си BOM, нито да го възстановяват. Да се работи без BOM е възможно, защото кодирането UTF-8 е „саморазпознаващо се“ и не се нуждае задължително от маркер за реда на байтовете, но е допустим.

В Windows обаче нещата изглеждат малко по-другояче. Уиндоуските програми не разпознават текст, кодиран в UTF-8, ако няма BOM. Програмите с отворен код (като cream или популярния програмен редактор Notepad++) се справят с това без проблеми, но Windows го не умее.

Затова, ако работите текст с кодиране UTF-8 и искате да го изпратите на някое приятелче, за което знаете, че е под Windows, сложете му BOM и тогава го изпратете. Иначе ще го накарате да се мъчи като грешен дявол, за да го разчете.

Маркерът за поредност на байтовете (BOM) може да сложите в cream, както току-що описах. Ама и в питонската библиотека gtools.py (вижте glotta) аз съм предвидил функции за това.

Страница: А. И.
Електронна поща
Дата на публикуване: 15.V.2014
Последна редакция: 27.IV.2023
Съобразено с
html5/css3