Содержание
Атрибут http-equiv | htmlbook.ru
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS |
3.0+ | 1.0+ | 4.0+ | 1.0+ | 1.0+ | 1.0+ | 1.0+ |
Спецификация
HTML: | 3.2 | 4.01 | 5.0 | XHTML: | 1.0 | 1.1 |
Описание
Браузеры преобразовывают значение атрибута http-equiv,
заданное с помощью content, в формат заголовка
ответа HTTP и обрабатывают их, как будто они прибыли непосредственно от сервера.
Синтаксис
HTML |
|
XHTML |
|
Значения
Любой подходящий идентификатор. Ниже приведены некоторые допустимые значения
атрибута http-equiv.
- Content-Type
- Тип кодировки документа.
- expires
- Устанавливает дату и время, после которой информация в документе будет считаться
устаревшей. - pragma
- Способ кэширования документа.
- refresh
- Загрузить другой документ в текущее окно браузера.
Значение по умолчанию
Нет.
Пример
HTML 4.01IECrOpSaFx
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Тег META, атрибут http-equiv</title>
<meta http-equiv="expires" content="Sun, 01 Jan 2013 07:01:00 GMT">
</head>
<body>
<p>...</p>
</body>
</html>
Не выкладывайте свой код напрямую в комментариях, он отображается некорректно.
Воспользуйтесь сервисом cssdeck.com или jsfiddle.net,
сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.
Метатеги | htmlbook.ru
Метатеги используются для хранения информации предназначенной для браузеров
и поисковых систем. Например, механизмы поисковых систем обращаются к метатегам
для получения описания сайта, ключевых слов и других данных.
Метатеги для поисковых механизмов
Среди разработчиков сайтов существует мнение, что правильно написанные
метатеги позволяют подняться к верхним строчкам поисковых серверов.
На самом деле это не так, на одних метатегах высоко не поднимешься,
но и неудачно выполненное содержимое метатегов может ухудшить рейтинг
сайта.
Два метатега предназначены специально для поисковых серверов: description
(описание) и keywords (ключевые слова). Некоторые
вебмастера добавляли в раздел keywords ключевые
слова, которые не имеют никакого отношения к теме сайта, но зато пользовались
определенным успехом среди посетителей поисковиков. Однако, через некоторое
время, поисковые системы научились бороться с таким явлением и проверяют содержимое
веб-страницы на соответствие заявленным ключевым словам.
Некоторые принципы, относящиеся к метатегам:
- не включайте ключевые слова, которые не содержатся на ваших страницах;
- не повторяйте ключевые слова;
- используйте метатеги по их прямому назначению;
- делайте описание и список ключевых слов различными для каждой страницы
сайта с учетом содержимого.
description
Большинство поисковых серверов отображают содержимое поля description
(пример 1) при выводе результатов поиска.
Если этого тега нет на странице, то поисковый движок просто перечислит первые
встречающиеся слова на странице, которые, как правило, оказываются не очень-то
и в тему.
Пример 1. Использование Description
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>description</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="Сайт об HTML и создании сайтов">
</head>
<body>
<p>...</p>
</body>
</html>
keywords
Этот метатег был предназначен для описания ключевых слов, встречающихся на
странице (пример 2). Но в результате действия людей, желающих попасть в
верхние строчки поисковых систем любыми средствами, теперь дискредитирован.
Поэтому многие поисковики пропускают этот параметр.
Пример 2. Использование Keywords
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>keywords</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Keywords" content="HTML, META, метатег, тег, поисковая система">
</head>
<body>
<p>...</p>
</body>
</html>
Ключевые слова можно перечислять через пробел или запятую. Поисковые системы
сами приведут запись к виду, который они используют.
Автозагрузка страниц
Чтобы автоматически загружать новый документ через определенный промежуток
времени используется инструкция http-equiv=»refresh»
(пример 3).
Пример 3. Автозагрузка страницы
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Автозагрузка</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="refresh" content="5; URL=http://www.htmlbook.ru">
</head>
<body>
<p>...</p>
</body>
</html>
Браузер поймет эту запись, как ожидать 5 секунд, а затем загрузить новую страницу,
указанную в параметре URL, в данном случае это переход на сайт htmlbook.ru.
Этот метатег позволяет создавать перенаправление (редирект) на другой сайт.
Если URL не указан, произойдет автоматическое обновление текущей страницы через
количество секунд, заданных в атрибуте content.
Кодировка
Чтобы сообщить браузеру, в какой кодировке находятся символы веб-страницы,
необходимо установить параметр <meta http-equiv=»Content-Type»
content=»text/html; charset=имя кодировки»>. Для операционной системы
Windows и кириллицы charset обычно принимает
значение utf-8 или windows-1251 (пример 4).
Пример 4. Выбор текущей кодировки
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Кодировка</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<p>Кириллица</p>
</body>
</html>
Если указание кодировки отсутствует, браузер пытается сам определить, какой
тип символов используется в документе и выбирает необходимую кодировку автоматически.
Браузер не всегда может точно распознать язык веб-страницы и в некоторых случаях
предлагает вьетнамскую кодировку вместо кириллицы. По этой причине лучше всегда
указывать приведенную строчку. Тем не менее, возникают обстоятельства, когда
указание кодировки может принести определенный вред. Например, веб-сервер автоматически
использует перекодирование данных в KOI-8, а браузер, встретив параметр charset=windows-1251,
переводит текст в кодировку Windows. Получается двойное изменение символов,
прочитать такой текст не просто. К счастью, подобная проблема уже отходит в
прошлое, во всяком случае, ее легко можно выявить и нейтрализовать на уровне
сервера.
— HTML | MDN
HTML элемент <meta>
представляет такие метаданные, которые не могут быть представлены другими HTML-метатегами, такими как <base>
, <link>
, <script>
, <style>
или <title>
.
Категории контента | Мета данные. Если задан itemprop атрибут: flow content, phrasing content. |
---|---|
Разрешённое содержимое | Отсутствует — это пустой элемент. |
Пропуск тега | Так как это пустой элемент, то открывающий тег должен присутствовать, а закрывающий — отсутствовать. |
Разрешённые родительские элементы | <meta charset> , <meta http-equiv> : <head> элемент. Если http-equiv это не заявленная декларация, то может быть внутри элемента <noscript> или <head> . |
Разрешённые роли ARIA | Отсутствуют |
DOM интерфейс | HTMLMetaElement (en-US) |
Этот элемент включает в себя глобальные атрибуты.
Примечание: атрибут name
имеет особое значение для элемента <meta>
и атрибут itemprop
не должен быть задан в <meta>
элементе в котором уже определены какие-либо name
, http-equiv
или charset
атрибуты.
charset
- Этот атрибут задаёт кодировку символов, используемую на странице. Он должен содержать стандартное имя IANA MIME для кодировки символов. Хотя стандарт не требует определённой кодировки, он рекомендует:
- Авторам рекомендуется использовать
UTF-8 (en-US)
. - Не следует использовать ASCII-несовместимые кодировки, чтобы избежать угроз безопасности: браузеры, не поддерживающие их, могут интерпретировать вредоносный контент как HTML. Это относится к семейству кодировок
JIS_C6226-1983
,JIS_X0212-1990
,HZ-GB-2312
,JOHAB
иEBCDIC
.
Примечание: ASCII-несовместимые кодировки — это те, которые не преобразуют 8-битные коды точек
0x20
,0x7E
,0x0020
,0x007E
в коды Unicode точек.- Авторы не должны использовать
CESU-8
,UTF-7
,BOCU-1
и/илиSCSU
, так как есть примеры атак межсайтового скриптинга использующих данные кодировки. - Авторам не следует использовать кодировку
UTF-32
, потому что не все алгоритмы кодирования HTML5 могут отличить её отUTF-16
.
Примечание:
- Указанный набор символов должен соответствовать одной странице.
Нет веских оснований для объявления неточного набора символов. <meta>
элемент должен находиться внутри элемента<head>
и задаваться в 1024 первых байтах HTML страницы, поскольку некоторые браузеры смотрят только эти байты перед выбором кодировки.- Этот
<meta>
элемент — часть алгоритма, определяющего набор символов (algorithm to determine the character set) страницы, который браузер поддерживает. ЗаголовокContent-Type
и любые Byte-Order Marks элементы переопределяют данный элемент. - Настоятельно рекомендуется определить кодировку символов. Если для страницы не определён набор символов, то некоторые cross-scripting технологии могут повредить страницу, например такие как UTF-7 fallback cross-scripting technique. Постоянная установка этого элемента будет защищать вас от этого риска.
- Этот
<meta>
элемент это синоним для pre-HTML5<meta http-equiv="Content-Type" content="text/html; charset=IANAcharset">
гдеIANAcharset
соответствует значению эквивалентногоcharset
атрибута.
Этот синтаксис по-прежнему разрешён, хотя и устарел и больше не рекомендуется.
- Авторам рекомендуется использовать
content
- Этот атрибут содержит значение для
http-equiv
илиname
атрибута, в зависимости от контекста. http-equiv
- Этот атрибут определяет прагму, которая может изменять поведение серверов и пользователей. Значение прагмы определяется с помощью
content
и может быть следующим:"content-language"
Этот API вышел из употребления и его работа больше не гарантируется.- Эта прагма определяет значение языка страницы по умолчанию.
Не используйте эту прагму, так как она устарела Используйте глобальный атрибут<html>
элемента вместо этого. "Content-Security-Policy"
- Это значение позволит администратору веб-сайта определить политику содержания для обслуживаемых ресурсов. За некоторыми исключениями, политика в основном включают в себя указание происхождения сервера и конечные точки сценария. Это помогает предотвратить атаки межсайтового скриптинга.
"content-type"
Этот API вышел из употребления и его работа больше не гарантируется.- Этот атрибут определяет MIME type документа. За ним следует синтаксис такой же как и в поле заголовка объекта содержимого HTTPI, однако как и внутри HTML элемента, большинство этих значений не доступно.
Поэтому допустимым синтаксисом для его содержимого является литеральная строка ‘text/html
‘, за которой следует набор символов со следующим синтаксисом: ‘; charset=
IANAcharset
‘ гдеIANAcharset
это предпочтительное MIME имя для набора символов, который определяется как IANA.
Замечания:- Не используйте эту прагму, так как она устарела. Используйте атрибут
charset
в элементе<meta>
вместо этого. <meta>
не может быть использована для выбора типа документа в XHTML документе, или в HTML5 документе, за которым следует XHTML синтаксис, никогда не задавайте MIME тип как XHTML MIME. Это будет некорректно.- Только HTML документ может использовать контент-тип, так что большинство из них являются неиспользуемыми, поэтому они являются устаревшими и заменяются
charset
атрибутом.
- Не используйте эту прагму, так как она устарела. Используйте атрибут
"default-style"
- Специализация этой прагмы — предпочтительный стиль таблиц, используемый на странице.
content
атрибут должен содержать заголовок<link>
элемента которыйhref
связывает атрибут с CSS таблцей стилей, или заголовок<style>
элемента, который содержит CSS таблицу стилей. "refresh"
- Эта прагма определяет:
- Количество секунд перезагрузки таблицы, если
content
атрибут содержит только положительный целочисленный номер; - Время, в количестве секунд, за которое страница должна быть перенаправлена на другую, если
content
атрибут содержит положительный целочисленный номер, заканчивающийся строкой ‘;url=
‘ и корректный URL.
- Количество секунд перезагрузки таблицы, если
"set-cookie"
Этот API вышел из употребления и его работа больше не гарантируется.- Эта прагма определяет cookie для страницы. Её содержимое должно заканчиваться синтаксисом, определяемым IETF HTTP Cookie Specification.
Замечание: Не используете эту прагму, так как она устарела. Используйте HTTP header set-cookie вместо этого.
name
- Этот атрибут определяет имя уровня документа метаданных.
Его не следует устанавливать, если один из атрибутовitemprop
,http-equiv
илиcharset
также указан в наборе.
Имя этого документального уровня метаданных связано со значением, которое содержится вcontent
атрибуте.Допустимые значения для имени элемента, со связанными с ними значениями, хранятся посредствомcontent
атрибута:application-name
, определяет имя веб-приложения, запущенного на веб-странице;
Замечание:- Браузеры могут использовать его для идентификации приложения. Он отличается от
<title>
элемента, который обычно состоит из имени приложения, но также может содержать специальную информацию, как например имя документа или статус; - Простые веб-страницы не определяют application-name meta.
- Браузеры могут использовать его для идентификации приложения. Он отличается от
автор
определяет в свободном формате имя автора документа;- описание, содержащее краткое и точное резюме содержания страницы. В некоторых браузерах, среди которых Firefox и Opera, этот мета используется как описание страницы по умолчанию в закладке;
- генератор, содержащий в свободном формате идентификатор программного обеспечения, создавшего страницу;;
- Ключевые слова, представленные строками, разделёнными запятыми, связанные с содержанием страницы
referrer
контролирует содержимое HTTP.Referer
HTTP — заголовок, прикреплённый к любому запросу, отправленному из этого документа:
Значения содержимого атрибута <meta name=»referrer»> no-referrer
Не отправлять HTTP Referer
заголовок.origin
Отправить оригинал. no-referrer-when-downgrade
Отправить оригинал, как ссылку по умолчанию на безопасный пункт (https->https), но не отправлять ссылку на менее безопасную структуру (https->http). Это поведение по умолчанию. origin-when-crossorigin
Отправляет полный URL (удалённый из параметров) при выполнении запроса с тем же источником, или только оригинал документа в других случаях. unsafe-URL
Отправляет полный URL (удалённый из параметров), при выполнении запроса того же или перекрёстного происхождения. Замечание: Некоторые браузеры поддерживают ключевые слова всегда, по умолчанию и никогда для реферера. Эти значения устарели.
Замечание: Динамическая вставка
<meta name="referrer">
(с помощью document.write или appendChild) создаёт недетерминизм, когда дело доходит до отправки рефереров. Также стоит отметить, что когда определяется несколько конфликтующих политик, применяется No-referrer policy.
Атрибут также может иметь значение, взятое из существующего листа определений WHATWG Wiki MetaExtensions page. Хотя ни один из них официально не был принят, в число предложений входят несколько часто используемых имён:
creator
, определят в свободном формате имя создателя документа. Это также может быть имя института. Если же имён больше чем одно, то несколько<meta>
элементов должны быть использованы;googlebot
, синонимrobots
, но только следует за Googlebot, сканирует индексы для Google;publisher
, определяет в свободном формате имя того, кто опубликовал документ. Это также может быть имя института;robots
, определяет поведение, поисковых роботов на странице. Список этих значений представлен ниже:
Значения для содержимого <meta name=»robots»> Значение Описание Используется index
Позволяет роботу индексировать страницу All noindex
Освобождает робота от индексирования страниц All follow
Позволяет роботу переходить по ссылкам со страницы All nofollow
Запрещает роботу переходить по ссылкам со страницы All none
Эквивалентно noindex, nofollow
Google noodp
Запрещает использование Open Directory Project описания, если таковые имеются, как описание страницы на странице результатов поиска Google, Yahoo, Bing
noarchive
Запрещает поисковой системе кешировать содержимое страницы. Google, Yahoo, Bing nosnippet
Запрещает отображение любого описания страницы на странице результатов поиска Google, Bing noimageindex
Запрещает отображение этой страницы в качестве ссылающейся страницы индексированного изображения. Google nocache
Синоним noarchive
Bing Замечания:
- Только кооперативные роботы будут следовать правилам, определённым именем роботов.
- Роботу необходимо получить доступ к странице, чтобы считать мета значение. Если вы хотите скрыть от них информацию, то используйте robots.txt файл.
- Если вы хотите удалить страницу индекса, изменение мета в noindex будет работать, но только тогда, когда робот снова посетит страницу. Убедитесь, что файл robots.txt не предотвращает такие посещения. Некоторые поисковые системы имеют инструменты, позволяющие быстро удалить какую-либо страницу.
- Некоторые возможные значения взаимно исключают друг друга, такие как использование индекса и noindex или follow и nofollow одновременно. В этих случаях поведение робота не определено и может варьироваться от одного к другому. Поэтому избегайте этих случаев.
- Некоторые поисковые роботы-роботы, такие как Google, Yahoo Search или Bing, поддерживают те же значения в директиве HTTP, X-Robot-Tags: это позволяет им использовать эту прагму для документов, отличных от HTML, например изображений.
slurp
,синонимrobots
, но следует только за Slurp, индексирующим роботом от Yahoo Search;
Наконец несколько общих терминов:
viewport
, который даёт подсказки о размере изначального размера viewport. Эта прагма используется только на некоторых мобильных устройствах.
Значения для содержания <meta name="viewport">
Значение Допустимые значения Описание width
положительный целочисленный номер или литерал device-width
Определяет ширину области просмотра в пикселях height
положительный целочисленный номер или литерал device-height
Определяет высоту области просмотра в пикселях initial-scale
положительное число между 0.0
и10.0
Определяет соотношение между шириной устройства и размером области просмотра maximum-scale
положительное число между 0.0
и10.0
Определяет максимальное значение зума; должен быть больше или равен минимальному масштабу или быть неопределённым. minimum-scale
положительное число между 0.0
и10.0
Определяет минимальное значение зума; должен быть меньше или равен максимальному масштабу или быть неопределённым. user-scalable
булевское значение (да или нет) Если весь набор содержит значения нет, то пользователю не доступен зум на веб-странице. По умолчанию задано значение да. Замечания:
- Хотя и не стандартизирован, этот атрибут используется разными мобильными браузерами, например Safari Mobile, Firefox for Mobile or Opera Mobile.
- Значения по умолчанию могут быть изменены у разных браузеров или устройств..
- Для изучения этой прагмы на Firefox for Mobile, посмотрите статью this article.
scheme
Этот API вышел из употребления и его работа больше не гарантируется.- Этот атрибут определяет схему, которая описывает метаданные.
Схема — это контекст, ведущий к правильной интерпретацииcontent
значения, например формата.Замечание: Не используйте этот атрибут, так как он устарел. Для него нет никакой замены, поскольку реально он не использовался. Опустите его.
В зависимости от установленных атрибутов, тип метаданных может быть одним из следующих:
- Если в наборе
name
, то это document-level metadata, применяемая ко всей странице. - Если в наборе
http-equiv
, то это pragma directive,
то есть информация, веб-сервер предоставляет информацию о том, как должна обслуживаться веб-страница. - Если в наборе
charset
, то это charset declaration,
то есть кодировка, используемая для сериализованной формы веб-страницы. - Если в наборе
itemprop
, то это user-defined metadata,
прозрачна для агента пользователя, поскольку семантика метаданных зависит от пользователя.
<meta charset="utf-8">
<meta http-equiv="refresh" content="3;url=https://www.mozilla.org">
BCD tables only load in the browser
против
Еще одна причина использовать короткий вариант заключается в том, что он соответствует другим экземплярам, где вы можете указать набор символов в markup. Например:
<script type="javascript" charset="UTF-8" src="/script.js"></script>
<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>
Согласованность помогает уменьшить количество ошибок и сделать код более читабельным.
Обратите внимание, что атрибут charset не чувствителен к регистру. Вы можете использовать UTF-8 или utf-8, однако UTF-8 более четкий, более читаемый, более точный.
Кроме того, нет абсолютно никаких причин использовать любое значение, отличное от UTF-8, в атрибуте meta charset или заголовке страницы. UTF-8-это кодировка по умолчанию для веб-документов со времен HTML4 в 1999 году и единственный практичный способ создания современных веб-страниц.
Также вы не должны использовать HTML сущности в UTF-8. Символы, такие как символ авторского права, должны быть набраны непосредственно. Единственные сущности, которые вы должны использовать, — это 5 зарезервированных символов markup: меньше, больше, амперсанд, простое число, двойное простое число. Сущности нуждаются в парсере HTML, который вы, возможно, не всегда захотите использовать в будущем, они вводят ошибки, делают ваш код менее читаемым, увеличивают размеры файлов и иногда неправильно декодируются в различных браузерах в зависимости от того, какие сущности вы использовали. Узнаете, как ввести/вставить авторское право, товарный знак, открыть кавычки, закрыть кавычки, Апостроф, длинное тире, короткое тире, пули, евро, и другие символы, которые вы встретите в ваш контент, и использовать эти символы в вашем коде. На компьютере Mac есть средство просмотра символов, которое можно включить в настройках системы клавиатуры, а также найти и затем перетащить нужные символы или использовать соответствующее средство просмотра клавиатуры, чтобы узнать, какие клавиши вводить. Например, товарный знак-это Вариант+2. UTF-8 содержит все символы и символы из каждого письменного человеческого языка. Так что нет никакого оправдания для использования — вместо ЭМ-тире. Неплохо также изучить правила пунктуации и типографики …, например, зная, что точка идет внутри близкой цитаты, а не снаружи.
Использование тега для чего-то вроде типа контента и кодирования очень
иронично, поскольку, не зная этих вещей, вы не могли бы разобрать файл
, чтобы получить значение мета-тега.
Нет, это неправда. Браузер начинает разбор файла в качестве кодировки браузера по умолчанию, либо UTF-8, либо ISO-8859-1. Поскольку US-ASCII является подмножеством как ISO-8859-1, так и UTF-8, браузер может читать просто отлично в любом случае … это одно и то же. Когда браузер сталкивается с тегом meta charset, если кодировка отличается от той, которую браузер уже использует, браузер перезагружает страницу в указанной кодировке. Вот почему мы помещаем тег meta charset вверху, сразу после тега head, перед чем-либо еще, даже перед заголовком. Таким образом, вы можете использовать UTF-8 символов в своем заголовке.
Вы должны сохранить свои файлы в кодировке UTF-8 без BOM
Это не совсем так. Если в вашем документе есть только символы US-ASCII, вы можете сохранить его как US-ASCII и использовать как UTF-8, потому что это подмножество. Но если есть символы Юникода, вы правы, вы должны сохранить как UTF-8 без BOM.
Если вам нужен хороший текстовый редактор, который сохранит ваши файлы
в UTF-8 я рекомендую Notepad++.
На Mac используйте Bare Bones TextWrangler (бесплатно) из Mac App Store или Bare Bones BBEdit, который находится в Mac App Store за $39.99 … очень дешево для такого замечательного инструмента. В любом приложении в нижней части окна документа есть меню, в котором вы указываете кодировку документа и легко выбираете «UTF-8 no BOM». И, конечно же, вы можете установить это значение по умолчанию для новых документов в настройках.
Но если ваш Webserver служит кодировке в заголовке HTTP,
что рекомендуется, то оба [мета-тега] излишни.
Это неверно. Конечно, вы должны установить кодировку в заголовке HTTP, но вы также должны установить ее в атрибуте meta charset, чтобы страница могла быть сохранена пользователем из браузера в локальное хранилище, а затем снова открыта позже, и в этом случае единственным указанием кодировки, которая будет присутствовать, является атрибут meta charset. Вы также должны установить базовый тег по той же причине … на сервере, базовый тег не нужен, Но при открытии из локального хранилища базовый тег позволяет странице работать так, как если бы она была на сервере, со всеми активами на месте и так далее, без битых ссылок.
AddDefaultCharset UTF-8
Или вы можете просто изменить кодировку определенных типов файлов, например:
AddType text/html;charset=utf-8 html
Совет для обслуживания как файлов UTF-8, так и файлов Latin-1 (ISO-8859-1) состоит в том, чтобы дать файлам UTF-8 расширение «text» и файлам Latin-1 «txt.»
AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text
Наконец, подумайте о сохранении ваших документов с окончаниями строк Unix, а не с устаревшими окончаниями строк DOS или (классическими) Mac, которые не помогают и могут повредить, особенно по мере того, как мы все дальше и дальше удаляемся от этих устаревших систем. Документ HTML с действительными кодировками HTML5, UTF-8 и окончаниями строк Unix-это хорошо выполненная работа. Вы можете делиться, редактировать, хранить, читать, восстанавливать и полагаться на этот документ во многих контекстах. Это лингва-франка. Это цифровая бумага.
Meta теги. Учебник html
Глава 10
В первой главе этого учебника, об общем построении html документа, я говорил о том, что все html документы должны иметь вот такой шаблон кода:
<html> — начало документа
<head> — начало головы
</head> — закрытие головы
<body> — начало тела
</body> — закрытие тела
</html> — конец документа
Где между тегами <body> </body> указывается информация предназначенная для вывода на экран в нужном нам виде, а между тегами <head> </head> исключительно служебная информация предназначенная для поисковых систем и браузеров тех или иных пользователей. Так что же это за информация такая и для чего она нужна? Отвечу, планомерно и порционально в этой главе.
С тегом <title> мы уже знакомы, с помощью него мы указываем имя документа в заголовке страницы. Теперь новый тег <meta> (закрывающего тега не требует) с помощью него мы и будем указывать эту самую служебную информацию на нашей страничке.
<meta> тег имеет следующие атрибуты:
- http-equiv — указывает браузеру как следует обработать основное содержание документа, точнее на основе каких данных.
- name — информационное имя. (применяется в паре с атрибутом content)
- content — информационное содержание, связанное с мета именем (name)
Теперь на примерах будем вникать в суть дела.
Пример (очень нужный и важный):
<meta http-equiv=»Content-Type» Content=»text/html; Charset=Windows-1251″>
Сначала расскажу зачем необходима эта строка в заголовке html документа. Данная запись указывает браузеру кодировку в которой была написана данная страница — формат документа и раскладку клавиатуры, в данном случае это кириллица для Windows. Если эту строку не писать в заголовке страницы, то есть большая вероятность что весь текст на Вашей странице отобразится в виде непонятных человеку «иероглифов» у разных пользователей тех или иных браузеров. Конечно, пользователь может применить к такому документу команду в браузере Вид->Кодировка->Кириллица, но он может не знать о данной функции, да и зачем утруждать человека данным действием.
Теперь разберём по «слогам» нашу запись:
<meta http-equiv=»Content-Type» — указываем что в этом мета теге мы будем заниматься Content-Type — типом содержания
Content=»text/html; — а именно его текстом
Charset=Windows-1251″> — документ для Windows — Кириллица где 1251 кодировка раскладки клавиатуры, так например Английская клавиатура будет задаваться Charset=Windows-1252
В настоящее время продвинутые веб-мастера рекомендуют использовать кодировку UTF 8
То есть писать в голове документа вот так:
<meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″>
Пример:
<meta http-equiv=»Content-Language» Content=»ru»>
В этой строчке говорится о том что язык Language документа является русским Content=»ru»
Неправильная установка языка и раскладки клавиатуры может привести к печальным последствиям.
Пример:
<meta name=»author» Content=»Остап Бендер»>
<meta name=»copyright» Content=»»Рога и копыта» Остап Бендер»>
Данные метаописатели предназначены для заявления об авторских правах непосредственно в заголовке html кода, так name=»author» указывает имя автора страницы, а name=»copyright» авторское право (копирайт) в котором может указываться фамилия, имя, отчество автора сайта, название фирмы, бренда.. и т. д. Кроме того включив в заголовок документа такое описание Вы значительно упростите задачу поисковой машине при поиске Вашего сайта по имени автора, названию фирмы, бренду…
Пример:
<meta name =»Generator» Content=»Microsoft Notepad»>
Если хотите можете указать с помощью какого html редактора была написана данная страница.
Пример:
<meta name=»description» Content=»Производим закупку по выгодным ценам рогов и копыт!»>
Description — краткое описание страницы. Данное описание частенько используется поисковыми системами для вывода в результатах поиска, по какому либо запросу, информации о сайте и его назначении.
Пример:
<meta name=»keywords» Content =»рога, копыта, рожки, рог, копыто, копытце, закупка, покупка, приобретение, выгодно, продать, купить, сбыть, реализовать, корова, бык, коровьи, бычьи, оплата, деньги, наличные, цена, цене»>
Keywords — ключевые слова веб-страницы, опять таки предназначены для поисковых машин.
Представьте что Вы ищете в какой либо поисковой системе сайт с информацией о том где можно продать те же рога и копыта 🙂 Какие слова и фразы Вы будите вводить в строке «Поиск»? ну наверно что то типа: «Где продать коровьи рога?» или «Реализовать копыта по выгодной цене» Так вот если определить ключевые слова и так сказать предугадать мысли потенциального посетителя можно надеяться на то, что та или иная поисковая система выдаст ссылку на Ваш сайт в первых строчках результата поиска. Конечно ввод данного метоописателя не есть гарант того что именно Ваш сайт займет первые места в поиске по данным словам, но всё же не стоит им пренебрегать. Впрочем, оптимизация и раскрутка сайта это отдельная тема для разговора.
Помните что описание description не должно превышать по длине более 200 символов, а ключевые слова keywords 1000 символов, иначе это может пагубно отразится при продвижении Вашего сайта в ТОП поисковых систем.
Пример:
<meta name=»Publisher-Email» Content=»Ваш_e-mail@сервер.домен»>
<meta name=»Publisher-URL» Content=»http://www.Ваш_сайт/»>
Думаю понятно.. здесь указывается адрес Вашего почтового ящика Publisher-Email и адрес сайта Publisher-URL
Пример:
<meta name =»revisit-after» Content=»15 days»>
Если некая страница на Вашем сайте подразумевает постоянное обновление и/или дополнение информационным содержанием, то хорошо было бы включить данное описание в заголовок данной страницы. Такое введение позволит программе роботу своевременно посещать Ваш сайт и индексировать его содержание. В нашем примере мы заявили о том, что собираемся обновлять содержание на странице не менее одного раза в 15 дней, можете не сомневаться программа робот возьмет Ваши планы себе на заметку и будет приходить «к Вам в гости» раз в пятнадцать дней, для того чтобы проверить ничего ли у Вас не изменилось..
Пример:
<meta http-equiv=»expires» content=»Sun, 24 jan 2010 12:28:36 GMT+03:00″>
Для того чтобы ускорить загрузку страницы, а так же сэкономить трафик современные браузеры сохраняют посещаемые пользователем страницы в кэш (на жёсткий диск), и при повторном посещении загружают их не с сервера, а непосредственно с кэша. На самом деле такая функция хороша собой.. но есть одно «но», дело в том что в браузере может отображаться уже устаревшая информация, какой либо страницы. Представьте, к примеру, Ваш сайт представляет собой некое периодическое новостное интернет издание, а пользователь получит, вместо самых свежих новостей, уже устаревшую информацию, ту которая хранится у него в кэше!! и не разобравшись в чем «беда» примет Ваш сайт за «мертвый» заброшенный и никем не обновляемый.
Для того чтобы принудительно заставить браузер загружать ту или иную страницу не с жёсткого диска, а с сервера необходим мета тег с данным синтаксисом, где указывается день недели, число месяц год время (чч:мм:сс) и часовой пояс(GMT+03:00 — время Московское + три часа). День недели и время дня можно не указывать. Теперь при чтении страницы браузером страница будет грузится с сервера, если указанная дата и время настало или просрочено, и напротив из кэша если указанное время еще не наступило.
Ниже на всякий случай приведены таблицы сокращений от Английских слов на месяцы и дни недели
|
|
Атрибуту content можно присвоить значение «0» <meta http-equiv=»Expires» content=»0″> в этом случае страница всегда будет загружаться с сервера.
И еще.. некоторые поисковые роботы могут отказаться индексировать документ с заведомо устаревшей датой. — не искушайте судьбу..
Пример:
<meta http-equiv=»pragma» content=»no-cache»>
А такая запись вовсе запретит браузеру кэшировать данную страницу.
Пример:
<meta name=»robots» content=»Index,follow»>
Данный мета тег предназначен для подачи поисковому роботу той или иной команды.
Список возможных команд роботу:
- Index — индексировать страницу
- Noindex — не индексировать страницу
- Follow — прослеживать гиперссылки на странице
- Nofollow — не прослеживать гиперссылки на странице
- All — индексировать страницу и прослеживать гиперссылки на странице (по умолчанию)
- None — не индексировать страницу и не прослеживать гиперссылки на странице
Пример:
<meta http-equiv=»Refresh» content=»10; URL=http://www.mysite/index.html»>
Если вдруг по каким либо причинам Вы задумаете поменять URL адрес Вашего сайта то хорошо было бы на старом месте оставить страницу вроде этой:
<html>
<head>
<meta http-equiv=»Content-Type» Content=»text/html; Charset=Windows-1251″>
<meta http-equiv=»Refresh» content=»10; URL=http://www.mysite/index.html»>
<title>Переадресация</title>
</head>
<body>
<font size=»+1″>
Адрес сайта был изменен, через 10 секунд Ваш браузер будет автоматически перенаправлен по новому адресу:<br>
<a href=»http://www.mysite.ru/index.html»><b>http://www.mysite.ru/</b></a><br>
Нажмите <a href=»http://www.mysite.ru/index.html»>здесь</a> для того чтобы выполнить переход немедленно.<br>
Приносим извинения за доставленные неудобства.
</font>
</body>
</html>
Разберём и осмыслим строчку из примера:
<meta http-equiv=»Refresh» content=»10; URL=http://www.mysite/index.html»>
meta http-equiv=»Refresh» — Refresh (восстановление) указывает браузеру что данную страницу необходимо обновить
content=»10; — обновить через заданное количество секунд (в нашем случае десять)
URL=http://www.mysite/index.html»— адрес новой/другой страницы на которую следует перейти.
Пример:
<meta http-equiv=»Refresh» content=»30″>
А вот если в заголовке Refresh URL адрес упустить, как показано в примере, то тогда браузер будет постоянно через каждые 30 секунд (ну или не 30.. сколько пропишите через столько и будет..) обновлять содержимое данной страницы.
Такой метод широко используется в новостных лентах, где информация идет так сказать потоком и требует постоянного обновления.
Пример:
<meta http-equiv =»Page-Enter» Content=»RevealTrans(Duration=1.0, Transition=0)»>
<meta http-equiv =»Page- Exit » Content=»RevealTrans(Duration=3.0, Transition=23)»>
Данные заголовки создают визуальные эффекты при переходе с одной страницы на другую.
- Page-Enter — Эффект появления страницы
- Page- Exit — Эффект исчезновения страницы
В которых:
- Duration — время действия эффекта в секундах
- Transition — Один из номеров предлагаемых эффектов (от 0 до 23) перечисленных в таблице:
Номер | Описание эффекта | Номер | Описание эффекта |
---|---|---|---|
0 | Прямоугольники внутрь | 12 | Растворение |
1 | Прямоугольники наружу | 13 | Вертикальная панорама внутрь |
2 | Круг внутрь | 14 | Вертикальная панорама наружу |
3 | Круг наружу | 15 | Горизонтальная панорама внутрь |
4 | Наплыв наверх | 16 | Горизонтальная панорама наружу |
5 | Наплыв вниз | 17 | Уголки влево — вниз |
6 | Наплыв вправо | 18 | Уголки влево — вверх |
7 | Наплыв влево | 19 | Уголки вправо – вниз |
8 | Вертикальные жалюзи | 20 | Уголки вправо – вверх |
9 | Горизонтальные жалюзи | 21 | Случайные горизонтальные полосы |
10 | Шажки горизонтальные | 22 | Случайные вертикальные полосы |
11 | Шажки вертикальные | 23 | Случайный выбор эффекта |
Пример:
Файл page1.html
<html>
<head>
<meta http-equiv=»Content-Type» Content=»text/html; Charset=Windows-1251″>
<meta http-equiv =»Page-Enter» Content=»RevealTrans(Duration=1.0, Transition=12)»>
<title>Эффекты перехода страниц</title>
</head>
<body bgcolor=»#c5ffa0″>
<center>
<h3>На заметку:</h3>
<font size=»+1″>Эффекты перехода с одной страницы на другую работают не во всех браузерах.</font><hr><br>
<font size=»+1″>Нажмите на «Перейти» чтобы перейти к следующей странице<br>
и оценить эффект перехода от одной странице к другой.</font><br><br>
<a href=»page2.html»><font size=»+2″>»Перейти»</font></a>
</center>
</body>
</html>
Файл page2.html
<html>
<head>
<meta http-equiv=»Content-Type» Content=»text/html; Charset=Windows-1251″>
<meta http-equiv =»Page-Enter» Content=»RevealTrans(Duration=2.0, Transition=23)»>
<title>Эффекты перехода страниц</title>
</head>
<body bgcolor=»#c0e4ff»>
<center>
<h3>На заметку:</h3>
<font size=»+1″>Эффекты открытия и закрытия веб-страниц будут видны только при переходе <br>
от одной страницы к другой или же при помощи кнопок «назад» «вперёд». <br>
При первом открыти страницы, а также во время перезагрузки<br>
эффекты перехода видны не будут.</font><hr><br>
<font size=»+1″>Нажмите на «Перейти» чтобы перейти к следующей странице<br>
и оценить эффект перехода от одной странице к другой.</font><br><br>
<a href=»page1.html»><font size=»+2″>»Перейти»</font></a>
</center>
</body>
</html>
-
Ещё раз напомню о том что мета теги стоит применять умело и грамотно особенно это касается команд для робота и кодировки символов, иначе весь Ваш труд может пойти насмарку..
-
Заголовок Refresh (автоматический переход на другую страницу) можно использовать не совсем стандартно.. Некоторые авторы используют его для создания своего рода «презентации» слайд шоу, где сменяющиеся страницы и есть кадры презентации. Представьте заходит человек на такой сайт а тут ему «Откинетесь на спинку кресла и расслабьтесь..»:) а далее сами по себе пошли картинки, графики, тексты.. а последняя страница тупиковая где пользователь берёт сайт «в свои руки» или же может замыкаться на первую. Только всегда помните о золотом правиле веб-мастера: Главное не переборщить!
Атрибут http-equiv тега | HTML справочник
HTML тег <meta>
Значение и применение
Атрибут http-equiv (HTML тега <meta>) фактически эквивалентен гипертекстовому заголовку (имитация http-заголовка), формируют заголовок страницы и определяют его обработку. Как правило, они управляют действиями браузеров и используются для формирования информации, выдаваемой обычными http-заголовками. Название заголовка указывается в атрибуте http-equiv, а значение указывается в атрибуте content.
В некоторых случаях могут автоматически быть переведены в настоящие HTTP-заголовки.
Если атрибут http-equiv используется, то атрибут name не должен устанавливаться в мета-теге.
Поддержка браузерами
Синтаксис:
<meta http-equiv = "content-security-policy | content-type | default-style | refresh">
Значения атрибута
Значение | Описание |
---|---|
content-security-policy | Это значение позволяет администраторам веб-сайта определить правила (политику) для обслуживаемых ресурсов. Это помогает использовать механизм обеспечения безопасности, с помощью которого можно защищаться от атак с внедрением контента, например, межсайтового скриптинга. |
content-type | Задает кодировку для документа. Считается устаревшим в HTML 5. |
default-style | Указывает имя предпочитаемых стилей документа. Имя задается в атрибуте content и должно соответствовать следующим условиям (ограничениям):
|
refresh | Определяет интервал времени в секундах через который документ будет обновлен. Если внутри атрибута content указать через запятую значение домена (ss, URL=»domain»), то произойдет переход со страницы на заданный ресурс. |
Отличия HTML 4.01 от HTML 5
В HTML 5 значение content-type считается устаревшим.
До стандарта HTML 5 значение кодировки страницы указывалось следующим образом:
<meta http-equiv = "Content-Type" content = "text/html; charset = character_set">
Пример использования
<!DOCTYPE html> <html> <head> <meta http-equiv = "refresh" content = "15, URL='http://basicweb.ru'" > <!-- мета элемент, который указывает, что страница будет перезагружена через 15 секунд и перейдет по указанному URL --> <meta http-equiv = "content-security-policy" content = "default-src https:" > <!-- мета элемент, который разрешает загрузку ресурсов (изображения, шрифты, скрипты и так далее) только с использованием https --> <meta http-equiv = "default-style" content = "default style" > <!-- мета элемент, который указывает имя предпочитаемых css стилей документа --> <title>Пример использования атрибута http-equiv тега <meta></title> <link href = "default.css" rel = "stylesheet" type = "text/css" title = "default style"> </head> <body> <h3> Это заголовок.</h3> <p>Это параграф. </p> </body> </html>
В данном примере мы использовали три элемента <meta> для которых были указаны различные значения атрибута http-equiv:
- первый мета элемент, указывает, что страница будет перезагружена (значение refresh) через 15 секунд и перейдет по указанному URL (значения, указанные в атрибуте content). Если адрес URL не указан, то страница просто будет перезагружена.
- второй мета элемент разрешает загрузку ресурсов (изображения, шрифты, скрипты и так далее) только с использованием https. Это стало доступным благодаря использованию значения content-security-policy, которое позволяет с использованием атрибута content определить правила (политику) для обслуживаемых ресурсов.
- третий мета элемент, указывает имя предпочитаемых css стилей документа. Обратите внимание, что значение атрибута content должно совпадать со значением глобального атрибута title HTML тега <link>.
HTML тег <meta>
Краткий курс HTML 5. HTML-документ — Exlab
3. HTML-документ
Когда вы набираете в редакторе обычный текст, то не задумываясь начинаете с первого слова. В нашем случае все несколько сложнее, поскольку сначала необходимо сообщить браузеру некоторую служебную информацию, сформировав каркас HTML-документа, а лишь затем приступать к его наполнению. Наш первый документ выглядит вот так:
<!DOCTYPE html>
<html>
<head>
<title>Заголовок документа</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
Мой первый HTML-документ
</body>
</html>
Сохраните это в файл с расширением .html, после чего откройте его в браузере. Вы должны увидеть страницу с единственной надписью «Мой первый HTML-документ», да еще в заголовке браузера написано «Заголовок документа». Если вместо русских букв отображаются квадраты, то сохраните файл, выбрав в вашем редакторе кодировку UTF-8 (команда «Сохранить как…»). Но давайте по порядку…
Определение типа документа
Первая строчка сообщает браузеру, что наш документ составлен в формате HTML 5. Это так называемое DTD, и оно всегда расположено в самом начале. В других версиях HTML/XHTML эта строчка имеет более сложный вид и здесь рассматриваться не будет. Не забывайте указывать DTD, чтобы браузер знал, с чем имеет дело, и верно отображал документ.
Структура документа
Ниже находится корневой элемент <html>
, охватывающий весь документ от DTD до самого конца. Внутри него один за другим расположены <head>
и <body>
. Как и следует из названия, <head>
— это «голова» документа, в которой размещается заголовок <title>
(его содержимое отображается в заголовке браузера) и прочая служебная информация (сейчас это единственный элемент <meta />
). <body>
— это «тело» документа, в котором и находится основной текст.
Элементы <html>
, <head>
и <title>
, наряду с DTD являются обязательными и должны быть размещены в описанном выше порядке. В противном случае документ не будет соответствовать стандартам W3C (проверьте одним из способов, описанных во введении). Это еще не значит, что он не будет отображаться в каких-либо браузерах, но нет гарантий, что отображение будет верным.
Кодировка документа
Элемент <meta />
предназначен для передачи служебной информации браузеру. Атрибут http-equiv
определяет «о чем сообщить», а content
— «что сообщить».
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
В этой строчке браузеру сообщается, что содержимое документа (content-type
) соответствует MIME-типу text/html
в кодировке UTF-8. Более подробно возможности этого элемента будут рассмотрены позже. Тег <meta />
непарный, поэтому завершается косой чертой «/».
Если нет причин использовать другую кодировку, то сохраняйте HTML-документы в UTF-8 (в большинстве редакторов есть соответствующая опция). К ее недостаткам можно отнести, пожалуй, лишь больший размер файлов. Это связано с тем, что символы, не входящие в ASCII (латиница, цифры, знаки препинания и др.), занимают два байта, вместо одного. Преимущество же в том, что она позволяет использовать любые символы Unicode (включая большинство алфавитов мира). UTF-8 — рекомендуемая кодировка для HTML-документов, и давно является стандартом «де-факто» в интернете.
HTML-мета-HTTP-эквивалент Атрибут
❮ HTML тег
Пример
Обновлять документ каждые 30 секунд:
Попробуй сам »
Определение и использование
Атрибут http-Equiv
предоставляет заголовок HTTP для информации / значения атрибута content
.
Атрибут http-Equiv
может использоваться для имитации заголовка ответа HTTP.
Поддержка браузера
Атрибут | |||||
---|---|---|---|---|---|
http-экв | Есть | Есть | Есть | Есть | Есть |
Синтаксис
Значения атрибутов
Значение | Описание |
---|---|
политика безопасности содержимого | Задает политику содержимого для документа.
Пример:
|
тип содержимого | Задает кодировку символов для документа.
Пример:
|
по умолчанию | Задает предпочтительную таблицу стилей для использования.
Пример:
Примечание. Значение «обновить» следует использовать осторожно, так как оно отнимает у пользователя управление страницей. Использование «обновления» вызовет сбой в |
❮ HTML тег
Объявление кодировки символов в HTML
Целевая аудитория:
Авторы HTML (с помощью редакторов или сценариев), разработчики сценариев (PHP, JSP и т. Д.)), Менеджеров веб-проектов и всех, кому нужно введение в объявление кодировки символов в своем HTML-файле.
Как мне объявить кодировку моего файла HTML?
Вы всегда должны указывать кодировку, используемую для страницы HTML или XML. Если вы этого не сделаете, вы рискуете, что символы в вашем контенте будут неправильно интерпретированы. Это не только вопрос удобочитаемости человека, все чаще машинам также необходимо понимать ваши данные. Объявление кодировки символов также необходимо для обработки символов, отличных от ASCII, вводимых пользователем в формы, в URL-адресах, сгенерированных сценариями, и т. Д.В этой статье описывается, как это сделать для файла HTML.
Если вам нужно лучше понять, что такое символы и кодировки символов, см. Статью Кодировки символов для начинающих . Для получения информации об объявлении кодировок для таблиц стилей CSS см. Объявления кодировки символов CSS .
Всегда объявляйте кодировку своего документа с помощью элемента meta
с атрибутом charset
или с помощью атрибутов http-Equ
и content
(называемых директивой pragma).Объявление должно полностью уместиться в первые 1024 байта в начале файла, поэтому лучше всего поместить его сразу после открывающего тега head
.
...
.. .
Неважно, какой именно вы используете, но проще набрать первый. Также не имеет значения, набираете ли вы UTF-8
или utf-8
.
Всегда следует использовать кодировку символов UTF-8. (Помните, что это означает, что вам также нужно сохранить вашего контента как UTF-8.) Посмотрите, что вам следует учитывать, если вы действительно не можете использовать UTF-8.
Если у вас есть доступ к настройкам сервера, вам также следует подумать, имеет ли смысл использовать HTTP-заголовок. Отметьте, однако, , что, поскольку заголовок HTTP имеет более высокий приоритет, чем мета-объявления в документе , авторы контента всегда должны учитывать, объявлена ли уже кодировка символов в заголовке HTTP. Если это так, должен быть установлен мета-элемент
для объявления той же кодировки.
Вы можете обнаружить любые кодировки, отправленные заголовком HTTP, с помощью средства проверки интернационализации.
А как насчет отметки порядка байтов?
Если у вас есть метка порядка байтов (BOM) UTF-8 в начале вашего файла, то последние версии браузера, отличные от Internet Explorer 10 или 11, будут использовать это, чтобы определить, что кодировка вашей страницы - UTF-8.Он имеет более высокий приоритет, чем любое другое объявление, включая заголовок HTTP.
Вы можете пропустить объявление кодировки meta
, если у вас есть спецификация, но мы рекомендуем вам сохранить его, поскольку это помогает людям, просматривающим исходный код, определить, какая кодировка страницы.
Подробнее о метке порядка байтов.
Следует ли указывать кодировку в заголовке HTTP?
Используйте объявления кодировки символов в заголовках HTTP, если это имеет смысл, и если вы можете, для любого типа содержимого, , но в сочетании с объявлением в документе.
Авторы контента должны всегда обеспечивать соответствие деклараций HTTP декларациям в документе.
Плюсы и минусы использования HTTP-заголовка
Одним из преимуществ использования HTTP-заголовка является то, что пользовательские агенты могут быстрее находить информацию о кодировке символов, когда она отправляется в HTTP-заголовке.
Информация заголовка HTTP имеет наивысший приоритет, когда она конфликтует с декларациями в документе, отличными от отметки порядка байтов.Средний
серверы, которые перекодируют данные (т. е. конвертируют в другую кодировку), могут воспользоваться этим, чтобы изменить кодировку документа перед его отправкой на небольшие устройства, которые распознают только несколько
кодировки. Неясно, широко ли используется эта перекодировка в настоящее время. Если это так, и он преобразует контент в кодировку, отличную от UTF-8, существует высокий риск потери данных, и это не является хорошей практикой.
С другой стороны, есть ряд потенциальных недостатков:
-
Авторам контента может быть сложно изменить информацию о кодировке для статических файлов на сервере, особенно при работе с интернет-провайдером.Авторам потребуются знания и доступ к настройкам сервера.
-
Настройки сервера могут по тем или иным причинам не синхронизироваться с документом. Это может произойти, например, если вы
полагаться на сервер по умолчанию, и это значение по умолчанию будет изменено. Это очень плохая ситуация, поскольку более высокий приоритет информации HTTP по сравнению с
объявление в документе может сделать документ нечитаемым. -
Существуют потенциальные проблемы как для статических, так и для динамических документов, если они не читаются с сервера; например, если они сохранены в
место, такое как компакт-диск или жесткий диск. В этих случаях информация о кодировке из заголовка HTTP недоступна.Точно так же, если кодировка символов объявлена только в заголовке HTTP, эта информация больше не доступна для файлов во время редактирования или когда они
обрабатываются такими вещами, как XSLT или скрипты, или когда они отправляются на перевод и т. д.
Так следует ли мне использовать этот метод?
Если файлы обслуживаются через HTTP с сервера, никогда не будет проблемой отправить информацию о кодировке символов документа в заголовке HTTP, если эта информация верна.
С другой стороны, из-за перечисленных выше недостатков мы также рекомендуем всегда объявлять информацию о кодировке внутри документа. Объявление в документе также помогает разработчикам, тестировщикам или руководителям отдела переводов, которые хотят визуально проверить кодировку документа.
(Некоторые люди утверждают, что объявлять кодировку в заголовке HTTP редко бывает целесообразно, если вы собираетесь повторить ее в
содержание документа. В этом случае они предлагают, чтобы заголовок HTTP ничего не говорил о кодировке документа. Обратите внимание, что это обычно означает
принятие мер, чтобы отключить любые настройки сервера по умолчанию.)
Работа с полиглотами и форматами XML
XHTML5: Документ XHTML5 обслуживается как XML и имеет синтаксис XML.Анализаторы XML не распознают объявления кодировки в мета-элементах
. Они распознают только декларацию XML. Вот пример:
Xml version = "1.0" encoding = "utf-8"?>
Объявление XML требуется только в том случае, если страница не обслуживается как UTF-8 (или UTF-16), но может быть полезно включить его, чтобы разработчики, тестировщики или менеджеры по производству переводов могли визуально проверить кодировку документ, посмотрев на источник.
Разметка полиглота: Страница, использующая разметку полиглота, использует подмножество HTML с синтаксисом XML, которое может быть проанализировано с помощью синтаксического анализатора HTML или XML. Он описан в Polyglot Markup: надежный профиль словаря HTML5 .
Поскольку документ полиглота должен быть в кодировке UTF-8, вам не нужно и даже не следует использовать объявление XML. С другой стороны, если файл должен читаться как HTML, вам нужно будет объявить кодировку, используя мета-элемент
, метку порядка байтов или заголовок HTTP.
Поскольку объявление в элементе meta
будет распознаваться только анализатором HTML, если вы используете подход с атрибутом content
, его значение должно начинаться с text / html;
.
Если вы используете мета-элемент
с атрибутом кодировки
, это не то, что вам нужно учитывать.
Информация в этом разделе относится к вещам, которые вам обычно не нужно знать, но которые включены сюда для полноты.
Работа с кодировками, отличными от UTF-8
Использование UTF-8 не только упрощает создание страниц, но и позволяет избежать неожиданных результатов при отправке формы и кодировках URL-адресов, которые по умолчанию используют кодировку символов документа. Если вы действительно не можете избежать использования кодировки символов, отличной от UTF-8, вам нужно будет выбрать из ограниченного набора имен кодировок, чтобы обеспечить максимальную совместимость и максимально долгий срок читабельности вашего контента.
Хотя обычно они называются кодировкой именами ,
в действительности они относятся к кодировкам, а не к наборам символов.Например, набор символов Юникода или «репертуар» может быть закодирован по трем различным схемам кодирования.
До недавнего времени реестр IANA был местом, где можно было найти имена для кодировок. Реестр IANA обычно включает несколько имен для одной и той же кодировки. В этом случае вы должны использовать имя, обозначенное как
"предпочтительный".
Новая спецификация Encoding теперь предоставляет список, который был протестирован на реальных реализациях браузеров. Вы можете найти список в таблице в разделе «Кодировки».Лучше всего использовать имена из левого столбца этой таблицы.
Обратите внимание на , однако, что наличие имени в любом из этих источников не обязательно означает, что использовать эту кодировку можно. Некоторые кодировки проблематичны. Если вы действительно не можете использовать UTF-8, вам следует внимательно изучить совет из статьи Выбор и применение кодировки символов .
Не придумывайте свои собственные имена кодировок, которым предшествует x-
. Это плохая идея, так как она
ограничивает совместимость.
Работа с устаревшими форматами HTML
HTML 4.01 не определяет использование атрибута charset
с элементом meta
, но любой недавний крупный браузер все равно обнаружит его и будет использовать, даже если страница объявлена как HTML4, а не HTML5. Этот раздел актуален только в том случае, если у вас есть другая причина, кроме обслуживания браузера для соответствия старому формату HTML. В нем описаны любые отличия от раздела ответов выше.
Для страниц, обслуживаемых как XML, см. Работа с многоязычными форматами и XML.
HTML4: Как уже упоминалось выше, для полного соответствия HTML 4.01 вам необходимо использовать директиву pragma, а не атрибут charset
.
XHTML 1.x используется как text / html: Для полного соответствия HTML 4.01 также требуется директива pragma, а не атрибут charset
. Вам не нужно использовать объявление XML, поскольку файл обслуживается как HTML.
XHTML 1.x используется как XML: Используйте объявление в кодировке
объявления XML в первой строке страницы.Убедитесь, что перед ним ничего нет, включая пробелы (хотя отметка порядка байтов в порядке).
Атрибут кодировки
в ссылке
HTML5 не поддерживает использование атрибута charset
в элементе a
или link
, поэтому вам следует избегать его использования. Он возник в спецификации HTML 4.01 для использования с элементами a
, link
и script
и должен был указывать кодировку документа, на который вы ссылаетесь.
Он был предназначен для использования во встроенном элементе ссылки, например:
Плохой код. Не копируйте!
См. Наш список публикаций .
Идея заключалась в том, что браузер сможет применить правильную кодировку к документу, который он извлекает, если никакая другая кодировка не указана для документа.
Всегда были проблемы с использованием этого атрибута. Во-первых, он плохо поддерживается основными браузерами.Одна из причин не поддерживать этот атрибут заключается в том, что, если браузеры будут делать это без специальных дополнительных правил, это будет вектором XSS-атаки. Во-вторых, трудно гарантировать, что информация верна в любой момент времени. Автор указанного документа вполне может изменить кодировку документа без вашего ведома. Если автор все еще не указал кодировку своего документа, вы теперь попросите браузер применить неправильную кодировку. И, в-третьих, в этом нет необходимости, если люди следуют рекомендациям, изложенным в этой статье, и правильно размечают свои документы.Это гораздо лучший подход.
Этот способ указания кодировки документа имеет самый низкий приоритет (т. Е. Если кодировка объявлена каким-либо другим способом, это будет проигнорировано). Это означает, что вы также не можете использовать это для исправления неверных объявлений.
Работа с UTF-16
Согласно результатам выборки Google из нескольких миллиардов страниц, менее 0,01% страниц в Интернете закодированы в UTF-16. На UTF-8 приходится более 80% всех веб-страниц, если вы включаете его подмножество, ASCII, и более 60%, если вы этого не делаете.Настоятельно не рекомендуется использовать UTF-16 в качестве кодировки страницы.
Если по какой-то причине у вас нет выбора, вот несколько правил объявления кодировки. Они отличаются от кодировок для других кодировок.
Спецификация HTML5 запрещает использование мета-элемента
для объявления UTF-16, поскольку значения должны быть совместимы с ASCII. Вместо этого вы должны убедиться, что у вас всегда есть метка порядка байтов в самом начале файла в кодировке UTF-16. По сути, это декларация в документе.
Кроме того, если ваша страница закодирована как UTF-16, не объявляйте файл как «UTF-16BE» или «UTF-16LE», используйте только «UTF-16». Отметка порядка байтов в начале вашего файла укажет, является ли схема кодирования прямым или обратным порядком байтов. (Это связано с тем, что контент, явно закодированный, например, как UTF-16BE, не должен использовать метку порядка байтов; но HTML5 требует метки порядка байтов для страниц в кодировке UTF-16.)
html - против
Еще одна причина, по которой следует использовать короткий, заключается в том, что он соответствует другим экземплярам, в которых вы можете указать набор символов в разметке.Например:
Согласованность помогает уменьшить количество ошибок и сделать код более читабельным.
Обратите внимание, что атрибут charset не чувствителен к регистру. Вы можете использовать UTF-8 или utf-8, однако UTF-8 более четкий, читаемый и точный.
Кроме того, нет абсолютно никакой причины использовать любое значение, кроме UTF-8, в атрибуте мета-кодировки или заголовке страницы.UTF-8 - это кодировка по умолчанию для веб-документов с HTML4 в 1999 году и единственный практический способ создания современных веб-страниц.
Также вам не следует использовать HTML-сущности в UTF-8. Такие символы, как символ авторского права, следует вводить напрямую. Единственные сущности, которые вы должны использовать, - это 5 зарезервированных символов разметки: меньше, больше, амперсанд, штрих, двойной штрих. Сущностям нужен синтаксический анализатор HTML, который вы, возможно, не всегда захотите использовать в будущем, они вносят ошибки, делают ваш код менее читаемым, увеличивают размеры ваших файлов и иногда неправильно декодируют в различных браузерах в зависимости от того, какие сущности вы использовали.Узнайте, как вводить / вставлять символы авторского права, товарного знака, открытой цитаты, закрывающей цитаты, апострофа, длинного тире, короткого тире, маркера, евро и любых других символов, с которыми вы сталкиваетесь в своем контенте, и использовать эти фактические символы в своем коде. На Mac есть средство просмотра символов, которое вы можете включить в настройках системы клавиатуры, и вы можете найти и затем перетащить нужные символы или использовать соответствующую программу просмотра клавиатуры, чтобы увидеть, какие клавиши вводить. Например, товарный знак - Option + 2. UTF-8 содержит все символы и символы всех письменных языков.Так что нет оправдания использованию - вместо длинного тире. Также неплохо было бы изучить правила пунктуации и типографики ... например, зная, что точка находится внутри закрытых кавычек, а не снаружи.
Использование тега для чего-то вроде типа содержимого и кодировки очень
иронично, поскольку, не зная этих вещей, вы не могли проанализировать файл
чтобы получить значение метатега.
Нет, это неправда. Браузер начинает синтаксический анализ файла в кодировке браузера по умолчанию, либо UTF-8, либо ISO-8859-1.Поскольку US-ASCII является подмножеством ISO-8859-1 и UTF-8, браузер может нормально читать в любом случае ... это то же самое. Когда браузер встречает мета-тег charset, если кодировка отличается от того, что браузер уже использует, браузер перезагружает страницу в указанной кодировке. Вот почему мы помещаем метатег набора символов вверху, сразу после тега заголовка, перед всем остальным, даже перед заголовком. Таким образом, вы можете использовать в заголовке символы UTF-8.
Вы должны сохранить файлы в кодировке UTF-8 без спецификации
Это не совсем так.Если в вашем документе есть только символы US-ASCII, вы можете сохранить его как US-ASCII и использовать как UTF-8, потому что это подмножество. Но если есть символы Unicode, вы правы, вы должны сохранить как UTF-8 без спецификации.
Если вам нужен хороший текстовый редактор, который сохранит ваши файлы
в UTF-8 я рекомендую Notepad ++.
На Mac используйте Bare Bones TextWrangler (бесплатно) из Mac App Store или Bare Bones BBEdit, который находится в Mac App Store за 39,99 долларов ... очень дешево для такого замечательного инструмента.В любом приложении в нижней части окна документа есть меню, в котором вы указываете кодировку документа и можете легко выбрать «UTF-8 без спецификации». И, конечно же, вы можете установить это значение по умолчанию для новых документов в настройках.
Но если ваш веб-сервер обслуживает кодировку в заголовке HTTP,
что рекомендуется, оба [мета-тега] излишни.
Это неверно. Вы, конечно, должны установить кодировку в HTTP-заголовке, но вы также должны установить ее в атрибуте мета-кодировки, чтобы страница могла быть сохранена пользователем из браузера в локальное хранилище, а затем снова открыта позже, и в этом случае единственное указание на кодировку, которая будет присутствовать, - это атрибут мета-кодировки.Вы также должны установить базовый тег по той же причине ... на сервере базовый тег не нужен, но при открытии из локального хранилища базовый тег позволяет странице работать так, как если бы она была на сервере, со всеми активы на месте и так далее, без битых ссылок.
AddDefaultCharset UTF-8
Или вы можете просто изменить кодировку определенных типов файлов, например:
AddType text / html; charset = utf-8 html.
Совет для обслуживания файлов UTF-8 и Latin-1 (ISO-8859-1) - дать файлам UTF-8 расширение «текст», а файлам Latin-1 - «txt».«
AddType текст / простой; кодировка = iso-8859-1 txt
AddType text / plain; charset = текст utf-8
Наконец, подумайте о том, чтобы сохранять свои документы с окончаниями строк Unix, а не с окончаниями строк в устаревших версиях DOS или (классических) Mac, которые не помогают и могут повредить, особенно в дальнейшем, когда мы все дальше и дальше отдаляемся от этих устаревших систем. Документ HTML с допустимой кодировкой HTML5, UTF-8 и окончаниями строк Unix - это хорошо сделанная работа. Вы можете делиться, редактировать, хранить, читать, восстанавливать и полагаться на этот документ во многих контекстах.Это лингва-франка. Это цифровая бумага.
: элемент метаданных - HTML: язык разметки гипертекста
HTML-элемент
HTML представляет метаданные, которые не могут быть представлены другими элементами, связанными с метаданными HTML, такими как
,
,