Snowimage-e.ru

Зимняя одежда

Маркер последовательности байтов

08-08-2023

Перейти к: навигация, поиск

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

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

Использование

Согласно спецификации Unicode, символ U+FEFF в середине потока данных должен интерпретироваться как «нулевой ширины неразрывный пробел» (по существу, нулевой символ). Однако Unicode 3.2 настоятельно рекомендует использовать в этом качестве символ U+2060 «Word Joiner»[1], а U+FEFF использовать только как маркер последовательности байтов.

Представление кодировки маркера последовательности байтов

Кодировка Представление (hex) Представление (dec) Представление (ISO-8859-1)
UTF-8[t 1] EF BB BF 239 187 191 
UTF-16 (BE) FE FF 254 255 þÿ
UTF-16 (LE) FF FE 255 254 ÿþ
UTF-32 (BE) 00 00 FE FF 0 0 254 255 □□þÿ (□ is the ascii null character)
UTF-32 (LE) FF FE 00 00 255 254 0 0 ÿþ□□ (□ is the ascii null character)
UTF-7[t 1] 2B 2F 76 38
2B 2F 76 39
2B 2F 76 2B
2B 2F 76 2F
[t 2]
43 47 118 56
43 47 118 57
43 47 118 43
43 47 118 47
+/v8
+/v9
+/v+
+/v/
UTF-1[t 1] F7 64 4C 247 100 76 ÷dL
UTF-EBCDIC[t 1] DD 73 66 73 221 115 102 115 Ýsfs
SCSU[t 1] 0E FE FF[t 3] 14 254 255 □þÿ (□ is the ascii "shift out" character)
BOCU-1[t 1] FB EE 28 251 238 40 ûî
GB-18030[t 1] 84 31 95 33 132 49 149 51 □1■3 (□ and ■ are unmapped ISO-8859-1 characters)
  1. 1 2 3 4 5 6 7 В этих кодировках последовательность не определяет именно порядок байтов, так как кодировка однобайтная, но эта последовательность может использоваться для определения способа кодировки.[2][3]
  2. В UTF-7 в связи с использованием base-64, четвёртый байт BOM является 001111xx в двоичном представлении, где xx зависит от следующего символа (первого после BOM). Поэтому четвёртый байт не является только частью BOM, но также содержит информацию о следующем (не BOM) символе. Для xx=00, 01, 10, 11, четвёртый байт будет, соответственно, 38, 39, 2B, или 2F при кодировке в base64. Если же следующий символ не кодируется base64, то используется 38 в качестве четвёртого байта, а следующий байт 2D.
  3. SCSU предусматривает и другие кодировки для U+FEFF, указанная последовательность является рекомендованной в UTR #6.[4]

Примечания

  1. Unicode FAQ: UTF-8, UTF-16, UTF-32 & BOM
  2. FAQ - UTF-8, UTF-16, UTF-32 & BOM: Can a UTF-8 data stream contain the BOM character (in UTF-8 form)? If yes, then can I still assume the remaining UTF-8 bytes are in big-endian order?. Проверено 4 января 2009. Архивировано из первоисточника 1 сентября 2012.
  3. STD 63: UTF-8, a transformation of ISO 10646 Byte Order Mark (BOM)
  4. UTR #6: Signature Byte Sequence for SCSU

Маркер последовательности байтов.

© 2012–2023 snowimage-e.ru, Россия, Петрозаводск, ул. Диспетчерская 33, +7 (8142) 28-85-31