Utf 8 без bom что это
Перейти к содержимому

Utf 8 без bom что это

  • автор:

Utf 8 без bom что это

Если не ошибаюсь, UTF-8 без BOM это кодировка, в которой каждому символу соответствует 1 байт. А просто UTF-8 тоже самое только в начале файла идут символы ef bb bf (в HEX)
Я всё правильно понял? Какой из них лучше использовать когда сохраняешь файлы?

И ещё. Что значит строчка в статус-баре Notepad++"ANSI AS UTF-8"? Это когда выбираешь кодировку "UTF-8 без BOM"

без BOM.
если сохраните с ним, то на файлах, где есть сессии или заголовки, будет ошибка.

Если написать в utf-8 файл в 3 символа, русский пробел и английский
‘З Z’
покажет без BOM
d0 97 20 5a
а с ним
ef bb bf d0 97 20 5a
т.е. два байта там только первая буква, bom это три байта

причём если набрать в строке "Выполнить" charmap
, выбрать юникод-шрифт, например "Arial"
, то символ З там записан как U+0417 Cirrilic Capital Letter Ze
а Z как U+005a Latin Capital Letter Z

т.е. чтобы файл не весил в два раза больше, из юникода сделали utf-8,
но я что-то не понял зачем сделали d097 из 0417, просто лень лезть искать чего почитать, из-за какой-то мелочи ,)

BOM актуален только для UTF-16 и UTF-32. В UTF-8 вообще нет такого понятия как BOM.

В notepad++ есть UTF-8 с BOM и без.

То что судя по всему в UTF-8 есть такое понятие как BOM. Вот попробовал сохранить русский текст с помощью notepad++ в кодировке UTF-8 без BOM — размер файла в байтах равен количеству символов (1 байт — 1 символ). Потом тот же текст просто в UTF-8 — получился файл на 3 байта больше, т.е. в начало файла добавился этот BOM, разве нет?

Понятием BOM является символ Byte Order Mark из набора UNICODE (а значит он есть в любых Unicode Transformation Formats — не важно 8-ми , 16-и или 32-разрядных.)
Другое дело, что всё же — применительно к www — кодировку UTF-8 стараются использовать по умолчанию, без этого символа (поскольку он мешает php-обработке). На этом, видимо, Саня и хотел сделать акцент.
Сам по себе этот символ никакой значимой информации (помимо того, что по его байтовому представлению можно опознать конкретную форму UNICODE) не несет.

Нужно смотреть не на то, что написано в редакторе, а на то, что написано в стандарте.
BOM = Byte Order Mark = метка порядка следования байтов. Стандарт не определяет порядок следования байтов в UTF-8.
Поэтому три символа в начале файла с кодами EF BB BF нельзя считать BOM. На самом деле эта сигнатура обозначает, что дальше идёт текст в формате UTF-8.

> размер файла в байтах равен количеству символов (1 байт — 1 символ)
Это верно только для символов с кодом менее 128.

В UTF-8 порядок следования байтов определен, (равно как и порядок следования бит в кодовых позициях байтов) и определен весьма жестко.
В начале файла нет трех символов с кодами EF BB BF
В начале файла есть три байта EF BB BF, представляющие один символ — Byte Order Mark (0. 0FEFFu).

>Это верно только для символов с кодом менее 128.

Ну пожалуй соглашусь, только что замутил файл который состоял из 94 символов и весил 188 байт без БОМ и 191 с БОМ.

Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве

UTF-8 vs UTF-8 без BOM — что когда использовать?

Маркер последовательности байтов или метка порядка байтов (англ. Byte Order Mark (BOM)) — Юникод-символ, используемый для индикации порядка байтов текстового файла. Его кодовый символ U+FEFF. По спецификации, его использование не является обязательным, однако, если маркер последовательности байтов используется, то он должен быть установлен в начале текстового файла. Помимо своего конкретного использования в качестве указателя порядка байтов, символ может также указать, какой кодировкой Unicode закодирован текст.

Кодировка Unicode может использовать 16-разрядные или 32-разрядные числа и приложение должно знать, как дальше с ними поступать. Поэтому потребность в маркере последовательности байтов возникает при обмене документами.

Различий никаких нет, кроме наличия/отсутствия маркера. Кодировка одна и та же – utf-8. По стандарту unicode маркер должен быть.

Удалять маркер BOM при сохранении нужно только для PHP, который почему-то не умеет корректно обрабатывать нормальные unicode файлы.

Сохраняйте в кодировке UTF-8 без BOM как это? Сохраняйте в кодировке UTF-8 без BOM как это?

Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого как UTF-8. Это метка порядка байтов Юникода (англ. Byte Order Mark, BOM), также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). По наличию сигнатуры программы могут автоматически определить, является ли файл закодированным в UTF-8, однако файлы с такой сигнатурой могут некорректно обрабатываться старыми программами, в частности xml-анализаторами. Такие редакторы, как Notepad++, Notepad2 и Kate позволяют явно указывать, следует ли добавлять сигнатуру при сохранении UTF-файлов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *