Чтобы определить кодировку для HTML5 Doctype, какую нотацию использовать?
-
Short:
<meta charset="utf-8" />
-
Long
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Чтобы определить кодировку для HTML5 Doctype, какую нотацию использовать?
Short:
<meta charset="utf-8" />
Long
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
В HTML5 они эквивалентны. Используйте более короткую, ее легче запомнить и напечатать. Поддержка браузера в порядке, поскольку она была разработана для обратной совместимости.
Обе формы объявления meta charset эквивалентны и должны работать одинаково в браузерах. Но есть несколько вещей, которые необходимо запомнить, когда объявления ваших веб файлов обозначаются как UTF-8:
Серверы Apache настроены на обслуживание файлов по ISO-8859-1 по умолчанию, поэтому вам нужно добавить следующую строку в ваш файл .htaccess
:
AddDefaultCharset UTF-8
Это приведет к тому, что Apache будет обслуживать ваши файлы, объявляющие кодировку UTF-8 в заголовке ответа Content-Type, но ваши файлы должны быть сохранены в UTF-8 (без спецификации) для начала.
Блокнот не может сохранять ваши файлы в UTF-8 без спецификации. Бесплатный редактор, который может Notepad ++. В строке меню программы выберите "Кодирование > Кодировка в UTF-8 без спецификации". Вы также можете открывать файлы и повторно сохранять их в UTF-8, используя "Кодирование > Преобразовать в UTF-8 без спецификации".
Подробнее о Знак байтового заказа (BOM) в Википедии.
Еще одна причина, по которой нужно пойти с коротким, состоит в том, что она соответствует другим экземплярам, где вы можете указать набор символов в разметке. Например:
<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, в атрибуте мета-charset или заголовке страницы. UTF-8 является кодировкой по умолчанию для веб-документов с HTML4 в 1999 году и единственным практическим способом создания современных веб-страниц.
Также вы не должны использовать HTML-объекты в UTF-8. Символы, подобные символу авторского права, должны быть напечатаны напрямую. Единственными сущностями, которые вы должны использовать, являются 5 зарезервированных символов разметки: меньше, больше, амперсанд, простой, двойной премьер. Сущностям нужен парсер HTML, который вы не всегда можете использовать в будущем, они вносят ошибки, делают ваш код менее читаемым, увеличивают размеры вашего файла и иногда неправильно декодируют в разных браузерах в зависимости от того, какие объекты вы использовали. Узнайте, как вводить/вставлять авторские права, торговую марку, открытую цитату, закрывать цитату, апостроф, em dash, en dash, bullet, Euro и любые другие символы, с которыми вы сталкиваетесь в своем контенте, и использовать эти фактические символы в своем коде. У Mac есть средство просмотра символов, которое вы можете включить в настройке системы клавиатуры, и вы можете найти, а затем перетащить нужные символы или использовать соответствующий инструмент просмотра клавиатуры, чтобы узнать, какие ключи нужно вводить. Например, товарный знак - Option + 2. UTF-8 содержит все символы и символы на каждом письменном человеческом языке. Поэтому нет никакого оправдания для использования - вместо em emash. Неплохая идея также изучить правила пунктуации и типографики... например, зная, что период проходит внутри закрытой цитаты, а не снаружи.
Использование тега для чего-то типа контента и кодировки иронично, поскольку, не зная этих вещей, вы не могли разобрать файл для получения значения метатега.
Нет, это не так. Браузер начинает синтаксический анализ файла в качестве кодировки по умолчанию браузера: UTF-8 или ISO-8859-1. Поскольку US-ASCII является подмножеством как ISO-8859-1, так и UTF-8, браузер может отлично читать в любом случае... это то же самое. Когда браузер встречает тег мета-кодировки, если кодировка отличается от того, что браузер уже использует, браузер перезагружает страницу в указанной кодировке. Вот почему мы помещаем мета-чарт-тег вверху, сразу после заголовка, перед чем-либо еще, даже заголовком. Таким образом, вы можете использовать символы 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 no BOM". И, конечно, вы можете установить это как значение по умолчанию для новых документов в настройках.
Но если ваш веб-сервер обслуживает кодировку в HTTP-заголовке, который рекомендуется, оба [метатеги] бесполезны.
Это неверно. Конечно, вы должны установить кодировку в HTTP-заголовке, но вы также должны установить ее в атрибуте мета-charset, чтобы страница могла быть сохранена пользователем, из браузера на локальное хранилище, а затем снова открыта позже, и в этом случае единственным признаком кодирования, которое будет присутствовать, является атрибут мета-кодировки. Вы также должны установить базовый тег по той же причине... на сервере базовый тег не нужен, но при открытии из локального хранилища базовый тег позволяет странице работать так, как если бы она была на сервере, при этом все активы на месте и т.д., не сломанные ссылки.
AddDefaultCharset UTF-8
Или вы можете просто изменить кодировку определенных типов файлов следующим образом:
AddType text/html;charset=utf-8 html
Совет для обслуживания файлов UTF-8 и Latin-1 (ISO-8859-1) должен предоставить UTF-8 файлам текстовое расширение и латинские файлы "txt."
AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text
Наконец, рассмотрите вопрос о сохранении ваших документов с окончанием строки Unix, а не в устаревших версиях DOS или (классической) линии Mac, которые не помогают и могут повредить, особенно по линии, поскольку мы все больше и больше получаем от этих устаревших систем. HTML-документ с допустимой кодировкой HTML5, UTF-8 и окончанием строки Unix - это хорошо выполненная работа. Вы можете делиться и редактировать, хранить, читать и восстанавливать и полагаться на этот документ во многих контекстах. Это lingua franca. Это цифровая бумага.
<meta charset="utf-8">
был введен с/для HTML5.
Как указано в документации, оба действительны. Однако <meta charset="utf-8">
предназначен только для HTML5 (и проще вводить/запоминать).
В свое время старый стиль неизбежно станет устаревшим в ближайшем будущем. Я буду придерживаться нового <meta charset="utf-8">
.
Там только один путь, но вверх. В техническом случае, что поэтапный отказ от старого (действительно, ДЕЙСТВИТЕЛЬНО быстрый)
Документация: HTML-мета-кодировка Attribute-W3Schools
Не оспаривая другие ответы, я думаю, что заслуживает упоминания следующее.
http-equiv
) нотация и "короткая" равны, в зависимости от того, что наступит первым:<meta>
;Вы можете протестировать, запустив echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\xbb\xbf<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="windows-1251"><title>привет</title></head><body>привет</body></html>' | nc -lp 4500
и указав браузер на localhost:4500
. (Конечно, вы захотите изменить или удалить части. Часть спецификации \xef\xbb\xbf
. Будьте осторожны с кодировкой вашей оболочки.)
Помните, что очень важно, чтобы вы явно объявляли кодировку. Разрешение браузерам может привести к проблемам безопасности.
Используйте <meta charset="utf-8"/>
для веб-браузеров при использовании HTML5.
Используйте <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
при использовании HTML4 или XHTML или для устаревших синтаксических анализаторов dom, таких как DOMDocument
в php 5.3
Есть некоторые новости, основанные на Mozilla Foundation, и sitepoint
Не используйте это значение (
http-equiv=content-type
), поскольку оно устарело. Предпочитайте атрибутcharset
в элементе <meta
>.
Чтобы вставить подпись в электронное письмо, я бы использовал длинную версию:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Причина в том, что не многие читатели электронной почты используют html5, поэтому всегда лучше использовать старые стили html. На самом деле, лучше использовать таблицы, чем divs + css.