- 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 BF239 187 191UTF-16 (BE) FE FF254 255þÿUTF-16 (LE) FF FE255 254ÿþUTF-32 (BE) 00 00 FE FF0 0 254 255□□þÿ(□ is the ascii null character)UTF-32 (LE) FF FE 00 00255 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 4C247 100 76÷dLUTF-EBCDIC[t 1] DD 73 66 73221 115 102 115ÝsfsSCSU[t 1] 0E FE FF[t 3]14 254 255□þÿ(□ is the ascii "shift out" character)BOCU-1[t 1] FB EE 28251 238 40ûîGB-18030[t 1] 84 31 95 33132 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.