- Byte order mark
-
Byte Order Mark (BOM) - Unicode символ, используемый для индикации порядка байтов текстового файла. Его кодовый символ U+FEFF. По спецификации его использование не является обязательным, однако если BOM используется, то он должен быть установлен в начале текстового файла. Помимо своего конкретного использования в качестве указателя порядка байтов, символ может также указать какой кодировкой Unicode закодирован текст.
Кодировка Unicode может использовать 16-битные или 32-разрядных числа и приложение должно знать как дальше с ним поступать. Поэтому потребность в BOM возникает при обмене документами.
Использование
Если символ спецификации появится в середине потока данных, Unicode говорит, что это должно быть истолковано как «нулевой ширины неразрывный пробел» (по существу нулевой символ). В Unicode 3.2, это использование не рекомендуется использовать в пользу «Word Joiner», символа , U+2060. Это позволяет U+FEFF использоваться только в качестве спецификации.
Представление кодировки byte order marks
Encoding Representation (hexadecimal) Representation (decimal) Representation (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
[t 2]
2B 2F 76 39
2B 2F 76 2B
2B 2F 76 2F43 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 2 3 4 5 6 7 В этих кодировках последовательность не определяет именно порядок байтов, так как кодировка однобайтная, но эта последовательность может использоваться для определения способа кодировки.[1][2]
- ↑ В UTF-7 в связи с использованием base-64, четвёртый байт BOM является
001111xx
в двоичном представлении, гдеxx
зависит от следующего символа (первого после BOM). Поэтому четвёртый байт не является только частью BOM, но также содержит информацию о следующем (не BOM) символе. Дляxx=00
,01
,10
,11
, четвёртый байт будет, соответственно,38
,39
,2B
, or2F
при кодировке в base64. Если же следующий символ не кодируется base64, то используется38
в качестве четвёртого байта, а следующий байт2D
. - ↑ SCSU предусматривает и другие кодировки для U+FEFF, указанная последовательность является рекомендованной в UTR #6.[3]
Примечания
- ↑ 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?. Архивировано из первоисточника 1 сентября 2012. Проверено 4 января 2009.
- ↑ STD 63: UTF-8, a transformation of ISO 10646 Byte Order Mark (BOM)
- ↑ UTR #6: Signature Byte Sequence for SCSU
Категории:- Юникод
- Управляющие символы
Wikimedia Foundation. 2010.