Ускоряющая клавиша n предназначена для пропусков при навигации по страницам. Пропуск для перехода на начало контента.

Данный документ является переводом. В случае каких-либо несоответствий и ошибок последняя версия документа на английском языке должна рассматриваться в качестве официальной. Первоначальное авторское право принадлежит W3C, как то указано ниже.

Переводчик: Alexandr, Art life

s_gotoW3cHome Internationalization
 

byte-order mark (BOM) в HTML

Предполагаемая аудитория: шифровальщики XHTML / HTML (используя редакторы или скрипты), разработчики скриптов (PHP, JSP, и т.д.), шифровальщики CSS, Менеджеры веб-проектов, и каждый, кто хочет узнать что такое BOM, и как он влияет на HTML.

Примечание: Так как этот документ был переведен, изменения были внесены в написанный английским языком оригинал. Смотрите журнал изменений.

Вопрос

Что такое byte-order mark, и что мне необходимо знать о нем при создании HTML?

Ответ

Что такое byte-order mark?

В начале Unicode файла вы можете найти несколько байтов, отображающих Unicode точку кода U+FEFF ZERO WIDTH NON-BREAKING SPACE (ZWNBSP). Эта комбинация байтов известна как byte-order mark (BOM).

Когда символ закодирован в UTF-16, его 2 или 4 байта можно упорядочить двумя разными способами (little-endian или big-endian). Изображение ниже показывает это. byte-order mark указывает, какой порядок используется, так что приложения могут немедленно расшифровать контент. UTF-16 контент должен всегда начинатся с BOM.

Байты представляют BOM.

В кодировке UTF-8, наличие BOM не является существенным, поскольку, в отличие от UTF-16 кодирования, нет альтернативной последовательности байтов. Однако BOM могут еще встречаться в тексте закодированном в UTF-8, как побочный продукт перекодирования или потому, что он был добавлен редактором. В этом случае BOM часто называют подписью UTF-8.

Что я должен знать о BOM?

Когда BOM используется на страницах или редакторах для контента закодированного в UTF-8, иногда он может представить пробелы или короткие последовательности символов, имеющие странный вид (такие как ). Именно поэтому, при наличии выбора, для совместимости, как правило, лучше упустить BOM в UTF-8 контенте.

Больше информации о том, как обнаружить и удалить byte-order mark, смотрите Показ проблем, связанных с UTF-8 BOM. Используя Информатор W3C Интернационализации вы можете узнать где страница содержит BOM: в начале или дальше в контенте.

Если ваш редактор позволяет указать хотите ли вы BOM при сохранении контента в UTF-8, то вы всегда должны говорить нет.

BOM в преимуществах на диалоговой панели.

Если вы используете UTF-16. Согласно спецификации HTML5, если ваша страница закодирована как UTF-16, то вы должны использовать byte-order mark в HTML. Это будет использоваться, чтобы указать браузеру кодировку страницы.

Рекомендуется использовать UTF-8, а не UTF-16, если вы используете кодировку Unicode. Это будет традиционно для большинства людей.

 

Для UTF-16 в настоящее время HTML5 спецификация запрещает использование любого другого назначения кодирования внутри документа, хотя это все еще в стадии обсуждения и может измениться. По сути, это означает, что спецификация сама и является назначением, что вы должны добавить.

Потребность использовать BOM для контента закодированного в UTF-16 в HTML5 означает, что вы не должны обслуживать HTML5 документы помеченые как "UTF16BE" или "UTF16LE". Это потому, что стандарт Unicode говорит, что вы не должны использовать BOM, когда текст обозначен как одна из тех кодировок. Поэтому, если вы хотите назначить кодировку в заголовке HTTP (что не запрещено HTML5 спецификацией), вы должны использовать только IANA charset название "UTF-16".

Отметим, что это исключительно о маркировке контента. Конечно, фактическая последовательность байтов одинакова, или вы обозначаете контент как UTF-16 и добавляете BOM, или вы помечаете его как UTF16LE или UTF-16BE.

 

Кстати говоря

byte-order mark также используется для текста обозначенного как UTF-32, и не должен использоваться для текста обозначенного как UTF-32BE или UTF-32LE. Однако, настоятельно не рекомендуется использовать UTF-32 для HTML контента, поэтому мы не упоминали его до сих пор.

Выскажите своё мнение (по-английски).

Подпишитесь на ленту новостей RSS.

Новые публикации

Новости главной страницы

Twitter (Новости главной страницы)

‎@webi18n

Дополнительные материалы

Автор: Richard Ishida, W3C. Переводчик: Alexandr, Art life.

Допустимый XHTML 1.0!
Допустимый CSS!
Кодировка UTF-8!

Перевод с английского: 2010-08-10. Последнее внесение изменений в перевод: 2011-04-01 10:00 GMT

Для просмотра истории внесения изменений нажмите qa-byte-order-mark в блоге i18n.