Я пытаюсь оптимизировать способ создания фреймворков HTML5. Прямо сейчас, я должен вставить <meta charset="utf-8"/>
сразу после <head>
, так что это первый элемент, который нужно указать (поэтому, когда я передаю <title>
а остальное элементов страницы, он уже определен как кодированный в UTF-8).
Проблема в том, что я читаю несколько книг по оптимизации производительности сайта, и большинство из них рекомендует указывать кодировку с помощью объявления Content-type
, а не вставлять блок <meta>
.
Документация W3C по обнаружению кодировки символов (раздел 8.2.2.1) говорит, что, по существу, заголовки HTTP имеют приоритет над любым явным объявлением EXCEPT, если пользователь объявляет переопределение для типа контента через пользовательский агент.
Тем не менее, валидатор W3C (именно поэтому я использую для отладки вывода моего кода HTML) не жалуется, но предупреждает меня об отсутствии блока <meta charset="utf-8"/>
, таким образом, поощряя его поместить его ( он говорит, что особенно рекомендуется, чтобы отображаемая страница была сохранена, что не так, но все же … меня это немного смущает).
Вопрос в том, как … я могу гарантировать, что страницы ВСЕГДА указаны в кодировке UTF-8? Должен ли я объявлять заголовок HTTP и <meta>
или только HTTP-заголовок?
Я не мог описать это лучше, чем: Дорога к HTML 5: кодировка символов
это 7-ступенчатый алгоритм; шаг 4 имеет 2 подэтапа, первый из которых имеет 7 ветвей, один из которых имеет 8 подэтапов, один из которых на самом деле ссылается на отдельный алгоритм, который сам имеет 7 шагов … Это продолжается на некоторое время , Суть его в том,
Параметр «charset» HTTP в поле «Content-Type». В PHP-коде, который:
header('Content-Type: text/html;charset=UTF-8');
Пометка байтового знака перед любыми другими данными в самом документе HTML. – Я не могу предложить использовать эту функцию. Если вам нравится, просто сохраните файлы соответственно, но не ожидайте, что вызовы header()
работать безупречно. Альтернативой является вывод спецификации вручную, в PHP:
echo "\xEF\xBB\xBF"; # UTF-8 BOM
Но даже тогда я не могу рекомендовать выводить спецификацию, потому что это обратное несовместимое изменение для выхода . Эти рекомендации предназначены для чтения, а не для вывода.
Объявление META с атрибутом «charset». – Пожалуйста, сделайте это, это хорошая практика. В HTML 5, который:
<meta charset="UTF-8">
Объявление META с атрибутом «http-equiv», установленным в «Content-Type» и значением, установленным для «charset». – Почему нет?! В HTML 5, который будет:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
Это те моменты. Моя рекомендация следующая:
Если вы нацеливаете системы, которые совершенно не знакомы с кодировками, используйте US-ASCII и замаскируйте все остальное, не входящее в него как объекты HTML.
Примечание. Это предложение подразумевает вывод в браузер, а не для хранения, хранение – это то, что попадает в вашу область, чтобы вы знали о кодировках, когда вы обрабатываете свой магазин. Никогда не используйте HTML-объекты, например, когда вы пишете HTML в свою базу данных mysql, когда вам это действительно не нужно (например,
&
в HTML-ссылках).