Описание тега byte-order-mark

Метка порядка байтов (BOM) - это символ Unicode, используемый для обозначения порядка байтов в текстовом файле или потоке. Поскольку спецификация представляет собой U+FEFF, она дает понять, являются ли байты старшего порядка первыми (поток начинается с FE.FF) или вторыми (поток начинается с FF.FE).

Метка порядка байтов (BOM) - это символ Unicode, используемый для обозначения порядка байтов (порядка байтов) текстового файла или потока. Использование спецификации не является обязательным и, если оно используется, должно появиться в начале текстового потока. Помимо конкретного использования в качестве индикатора порядка байтов, символ спецификации может также указывать, в каком из нескольких представлений Unicode закодирован текст.

Например, использование спецификации UTF-16 (U+FEFF) дает понять из первых двух байтов текста, является ли поток "big endian" (BE) - как западные числа, поэтому поток будет начинаться FE FF ... - или "с прямым порядком байтов" (LE) - как числа на арабском языке, чтобы поток начинался FF FE .... Если его неправильно интерпретировать как ISO-8859-1, он будет отображаться какþÿ (BE) или ÿþ (LE).

В UTF-8 спецификация не требуется и не рекомендуется, но должна состоять из трех байтов.0xEF 0xBB 0xBF. При неправильной интерпретации как ISO-8859-1 это выглядит как. Если увидеть этот триплет в необычных местах при выводе кода, это почти всегда указывает на то, что спецификация не игнорируется, когда она должна быть, или была добавлена ​​там, где этого не ожидали.

В UTF-32 используется та же спецификация, что и для UTF-16, но поскольку для каждого символа используются 32 бита (так U+0000FEFF), то его неправильная интерпретация ASCII-8859-1 будет содержать нулевые символы: □□þÿ (BE) или ÿþ□□ (LE), где представляет ASCII NUL характер.

Дополнительная информация