Указывает ли HTML5 кодировку символов по умолчанию для документов HTML, если кодировка символов не предоставляется?

Пример HTML-документа, полученного по HTTP, отсутствует:

  • заголовок HTTP Content-Type
  • HTML <meta charset="<character encoding>" />
  • HTML <meta http-equiv='Content-Type' content='Type=text/html; charset=<character encoding>'>

Что касается HTML5, по умолчанию используется, например, UTF-8, принятая в качестве кодировки символов? Или это полностью приложение, просматривающее HTML-документ, чтобы выбрать значение по умолчанию?

Ответы

Ответ 1

Кодировка определяется с использованием следующих правил:

  • Пользователь переопределяет.
  • Параметр "charset" HTTP в поле "Content-Type".
  • Порядковый порядок байтов перед любыми другими данными в самом документе HTML.
  • Объявление META с атрибутом "charset" .
  • Объявление META с атрибутом "http-equiv", установленным в "Content-Type", и значением, установленным для "charset" .
  • Неопределенный эвристический анализ.

... и затем...

  • Нормализовать заданную строку кодировки символов в соответствии с правилами сопоставления псевдонимов Charset, определенными в Unicode Technical Standard # 22.
  • Переопределить некоторые проблемные кодировки, т.е. преднамеренно обрабатывать некоторые кодировки, как если бы они были разными кодировками. Наиболее распространенным вариантом является обработка US-ASCII и ISO-8859-1 как Windows-1252, но есть несколько других переопределений кодировки, перечисленных в этой таблице. Как отмечается в спецификации, "Требование к обработке определенных кодировок в качестве других кодировок в соответствии с приведенной выше таблицей является умышленным нарушением спецификации модели символов W3C".

Но самое главное:

Вы должны всегда указывать кодировку символов в каждом документе HTML или плохие вещи будут. Вы можете сделать это сложным способом (заголовок Content-Type HTTP), простой способ (объявление <meta http-equiv>) или новый способ (<meta charset>), но, пожалуйста, сделайте это. Интернет благодарит вас.

Источники: