Я обрабатываю материал для кодирования файлов. Когда я узнаю BOM, он говорит The UTF-8 representation of the BOM is the byte sequence 0xEF,0xBB,0xBF
, затем я нахожу Code page layout, который представляет собой таблицу, которая содержит много информации о кодировке символов. Мне любопытно, что, если есть несколько правил для последовательности байтов BOM, я имею в виду, почему бы не использовать 0xEE,0xFF,0xBB
или любую другую байтовую последовательность для представления UTF-8? Заранее спасибо.Какие правила задают последовательность байтов для спецификации?
ответ
BOM относится к кодировке Unicode UTF (кодировка Unicode Transformation Format). Это символ Юникода U+FEFF ZERO WIDTH NO-BREAK SPACE
, закодированный в определенную последовательность байтов в соответствии с правилами, определенными в конкретном UTF, в котором он закодирован, так же, как и для любого другого кодового слова Unicode. Что делает спецификацию спецификации особенной, так это то, что она является первой кодированной кодовой точкой в начале кодированного текста, поэтому вы можете обнаружить, какой UTF использовался для кодирования текста, если он не указан вне диапазона с помощью других средств.
спецификации для UTF-8 EF BB BF
, для UTF-16LE является FF FE
, для UTF-32LE является FF FE 00 00
и т.д. Все они просто разные представления одного и того же Unicode элемент кода U+FEFF
.
Другие кодировки, такие как Windows-1252, на которые вы ссылаетесь, не используют спецификацию и не могут кодировать этот конкретный символ, поэтому нет альтернативы «кодировке Windows-1252» спецификации.
Целью * единственной цели спецификации является указать кодировку Юникода и его порядок байтов (отсюда и название), но быть спецификацией не является * единственной целью кодовой точки 'U + FEFF'. –