Какую нотацию мне следует использовать, чтобы определить кодировку для HTML5 Doctype?
Короткий:
<meta charset="utf-8" />
Длинный:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Какую нотацию мне следует использовать, чтобы определить кодировку для HTML5 Doctype?
Короткий:
<meta charset="utf-8" />
Длинный:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
В HTML5 они эквивалентны. Используйте более короткий, его легче запоминать и печатать. Поддержка браузера прекрасна, поскольку он был разработан для обратной совместимости.
<meta charset='utf-8'>
работает в IE6?
- person Šime Vidas; 15.01.2011
<meta>
для установки кодировки символов отключает предварительный загрузчик в IE8, что может повлиять на время загрузки вашей страницы. Да, да, я знаю ... откажитесь от IE8. @ MészárosLajos может вернуться сюда через пару лет и разорить нас за то, что мы все еще поддерживаем IE8. ;-)
- person erturne; 05.03.2014
charset
в метатеге ?, где он используется? Или в чем преимущество charset
в html
- person 151291; 12.03.2016
<meta charset="utf-8">
, но не при использовании другого. как?
- person Amit Shah; 26.04.2017
Обе формы объявления 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) в Википедии.
meta
и HTTP-заголовок. Вам просто нужен один из заголовков BOM, meta
или HTTP.
- person hsivonen; 28.11.2013
URIEncoding="utf-8"
к каждому соединителю.
- person Brett Ryan; 03.03.2014
Why do you say UTF-8 HTML should be without a BOM
Действительно, отсутствие спецификации является той самой причиной, по которой вам в первую очередь понадобится HTTP-заголовок или метатег.
- person Stijn de Witt; 19.08.2015
Summing up: don't use BOM for UTF-8
Я не могу с этим согласиться. Спецификация в UTF-8 очень полезна для обозначения типа кодировки. В противном случае нам придется угадывать или использовать такие вещи, как метатеги, к которым относится этот вопрос. Классная особенность спецификации заключается в том, что она является частью спецификации Unicode и, таким образом, может использоваться для всех данных, закодированных в Unicode, а не только в HTML. Что мы должны сделать, так это использовать спецификации везде, позволить устаревшему программному обеспечению взорваться, сообщать об этих ошибках и исправлять их.
- person Stijn de Witt; 19.08.2015
Еще одна причина, по которой следует использовать короткий, заключается в том, что он соответствует другим экземплярам, в которых вы можете указать набор символов в разметке. Например:
<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, в атрибуте мета-кодировки или заголовке страницы. 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 text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text
Наконец, подумайте о том, чтобы сохранять ваши документы с окончаниями строк Unix, а не с окончаниями строк в устаревших версиях DOS или (классических) Mac, которые не помогают и могут повредить, особенно в дальнейшем по мере того, как мы все дальше и дальше отдаляемся от этих устаревших систем. Документ HTML с допустимой кодировкой HTML5, UTF-8 и окончанием строк Unix - это хорошо сделанная работа. Вы можете делиться, редактировать, хранить, читать, восстанавливать и полагаться на этот документ во многих контекстах. Это лингва-франка. Это цифровая бумага.
"You should also set a base tag..."
должен сопровождаться предупреждениями, описанными здесь.
- person Mafuba; 19.03.2013

, чем глиф по умолчанию или какой-нибудь странный символ, которого я не узнаю.
- person Daniel Lubarov; 17.05.2015
<meta charset="utf-8">
был введен с / для HTML5.
Как упоминалось в документации, оба действительны. Однако <meta charset="utf-8">
предназначен только для HTML5 (и его легче вводить / запоминать).
Со временем старый стиль станет нерекомендуемым в ближайшем будущем. Я бы придерживался нового <meta charset="utf-8">
.
Есть только один путь, но вверх. В случае с технологиями это постепенный отказ от старых (действительно, ДЕЙСТВИТЕЛЬНО быстро)
Документация: Атрибут мета-кодировки HTML - 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
. Будьте осторожны с кодировкой вашей оболочки.)
Помните, что очень важно явно указать кодировку. Предоставление браузеру возможности догадываться может привести к проблемам с безопасностью.
UTF-7
, насколько я помню. Кроме того, нюхать в Интернете, как правило, плохо, например когда вы загружаете изображение, то это воспринимается как содержимое сценария.
- person phk; 23.09.2016
При использовании HTML5 используйте <meta charset="utf-8" />
для веб-браузеров.
Используйте <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
при использовании HTML4 или XHTML или для устаревших парсеров dom, например DOMDocument
в php 5.3.
Чтобы встроить подпись в электронное письмо, я бы использовал длинную версию:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Причина в том, что не многие читатели электронной почты используют html5, поэтому всегда лучше использовать старые стили html. На самом деле, лучше использовать таблицы, чем divs + css.
Некоторые новости основаны на Mozilla Foundation и sitepoint
Не используйте это значение (
http-equiv=content-type
), так как оно устарело. Предпочитайте атрибутcharset
в элементе ‹meta
>.
Я бы порекомендовал сделать это так, чтобы все соответствовало HTML5.
<meta charset="UTF-8">
EG:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
Content-Type
. Метатег используется только тогда, когда страница загружается из файловой системы локального диска. - person BalusC   schedule 15.01.2011http-equiv
версия. - person   schedule 05.11.2012DOMDocument
не получает длинный :( - person Timo Huovinen   schedule 13.03.2014