Byte order mark | это... Что такое Byte order mark? (original) (raw)
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 382B 2F 76 392B 2F 76 2B2B 2F 76 2F[t 2] | 43 47 118 5643 47 118 5743 47 118 4343 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