Подтвердить что ты не робот

Требуется ли метатег charset для HTML5?

W3C "HTML5 отличия от HTML4" рабочих состояний проекта:

Для синтаксиса HTML авторы должны объявить кодировку символов.

Что означает "требуется"?

Очевидно, что браузер все равно будет отображать HTML5 без метатега. Если кодировка не указана, какая кодировка будет использовать браузер?

В принципе, я хочу знать, действительно ли нужно включить <meta charset="">, или если 99% браузеров времени будут использовать правильную кодировку в любом случае.

Вот ссылка: http://www.w3.org/TR/html5-diff/#character-encoding

4b9b3361

Ответ 1

Нет необходимости включать <meta charset="blah">. Как указано в спецификации, набор символов также может быть задан сервером с использованием заголовка HTTP Content-Type или путем включения спецификации Unicode в начале загруженного файла.

Большинство веб-серверов сегодня отправят обратно набор символов в заголовок Content-Type для текстовых данных HTML, если ни один не указан. Если веб-сервер не отправляет обратно набор символов с заголовком Content-Type, и файл не включает спецификацию, и страница не включает объявление <meta charset="blah">, браузер будет иметь кодировку по умолчанию, которая обычно основана на языковые настройки хост-компьютера. Если это не соответствует фактической кодировке файла, некоторые символы будут отображаться неправильно.

Будут ли браузеры использовать правильную кодировку в 99% случаев? Вероятно, если ваша страница UTF-8. Если нет, возможно, нет.

W3C предоставляет документ в котором излагаются правила четкости для трех методов, в которых говорится, что порядок - это HTTP-заголовок, спецификация, а затем спецификация документа (метатег).

Ответ 2

В соответствии с расширением браузера Google PageSpeed, объявление кодировки в метаэлементе "отключает функцию просмотра IE8", которая, по-видимому, заставляет его загружать все в последовательном порядке.

Я понял, что для допустимого HTML5 требуется <meta charset-"utf-8">, но именно поэтому я начал просматривать здесь.

Этот проект спецификации кажется мне довольно понятным, и поскольку я добавляю HTTP-заголовок через .htaccess, я собираюсь начать его покидать... даже если я соблазн не делать этого, просто сделайте, чтобы пользователи IE8 пострадали немного больше.

Спасибо.

@Jules Мазур, есть ли у вас какие-либо ссылки на эти вопросы? Большинство из того, что я делаю, это SEO и доступность важны для меня, и если это так, я более чем восприимчив к тому, чтобы оставить мета-декларацию.

Ответ 3

Важно указать набор символов документа как можно раньше (либо через заголовок Content-Type, либо тег META), в противном случае браузер будет удален, чтобы определить кодировку перед разбором документа, и это может отрицательно влияет на время загрузки страницы.

Ответ 4

С 1999 года, когда вышло большинство этих спецификаций w3C, органы стандартизации подталкивали поставщиков (производителей серверов, браузеров и приложений к документам) следовать правилам кодирования и использовать метатеги для определения цели. Но из-за жадности, плохого дизайна браузера и других факторов очень немногие постоянно следовали этим требованиям в течение многих лет. В результате у нас сломалась система. Некоторые поставщики, такие как Mozilla, следуют стандартам метатэгов с 2001 года, в то время как другие, такие как Microsoft и Google, этого не делают.

По этой причине все веб-разработчики должны использовать дизайн непредвиденных обстоятельств при создании всех своих веб-страниц и использовать метатеги и другую стандартную разметку, несмотря на несовместимую поддержку. Другими словами, используйте оба типа метатэгов (<meta charset="UTF-8"> и <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>), хотя в действительности эта разметка не будет определять, как ваши страницы кодируются или интерпретируются современными пользовательскими агентами. Основным драйвером того, какая кодировка используется браузером, будет то, как эта страница была закодирована программным обеспечением, как кто-то упоминал выше, который все чаще называется UTF-8, который является просто стандартом юникода, который в настоящее время популярен. Пользовательский браузер, скорее всего, пропустит метатеги и проверит страницу, чтобы угадать намерение автора кодировать.

В 2000 году весь этот спор о метатеге был еще хуже. Использование HTML4 со встроенными символами Unicode часто означало страницы, на которых не было ни правильного, ни правильного кодирования, несмотря на HTTP-заголовки сервера, использование символьных сущностей и метатегов, просто потому, что современные браузеры тогда не следовали стандартам и не смотрели на метатеги. кодирование или закодированные символьные объекты. Вот почему для борьбы со всеми сложными комбинациями поддержки и систем при неудачном внедрении стандартов лучше всего использовать все комбинации технологий, чтобы увеличить "вероятность" правильной визуализации ваших веб-страниц.

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

Это должна быть стратегия, используемая для дизайна всех веб-страниц, пока мы каким-то образом не обеспечим универсальное принятие веб-стандартов, что в настоящее время становится все более маловероятным с мобильными пользовательскими агентами и HTML5, которые заставили нас вновь отказаться от многих стандартов XML, которые могли бы обеспечить лучшее применение. дизайн разметки.