Об этом инструменте
HTML-сущности — это управляющие последовательности, представляющие символы, которые иначе были бы разобраны как разметка или не могут быть надёжно набраны — < для знака «меньше», & для амперсанда, для неразрывного пробела, а также числовые формы, такие как   (десятичная) или   (шестнадцатеричная) для любой кодовой точки Unicode. Кодирование преобразует исходный символ в его сущность; декодирование возвращает сущность обратно к символу. Этот инструмент кодирует в именованном, десятичном или шестнадцатеричном выводе и декодирует все три формы, включая распространённый именованный набор и астральные символы, такие как эмодзи.
Используйте инструмент, чтобы безопасно встраивать строки, созданные пользователями, образцы кода или цитаты в HTML, не ломая страницу и не открывая дыру XSS; чтобы исправить текст, пришедший дважды закодированным как &amp; из неправильно настроенного шаблона; чтобы проверить числовую ссылку, например —, и увидеть, что это длинное тире; или чтобы перевести символы с диакритикой и символы в сущности, состоящие только из ASCII, для старых конвейеров электронной почты и лент. По умолчанию кодирование экранирует только & < > " ', либо каждый не-ASCII символ, когда вы включаете полную область.
Кодирование HTML-сущностей предназначено для безопасного отображения, а не для безопасности — кодируйте в сущности недоверенный ввод в момент его отрисовки в HTML и полагайтесь на настоящий очиститель (sanitizer) плюс Content Security Policy, чтобы остановить XSS.
Часто задаваемые вопросы
В чём разница между именованными, десятичными и шестнадцатеричными HTML-сущностями?
Это три нотации для одного и того же символа. Именованные сущности, такие как ©, читаемы человеком, но существуют только для фиксированного набора символов; десятичные (©) и шестнадцатеричные (©) числовые ссылки работают для любой кодовой точки Unicode, поэтому любой символ всегда можно выразить численно.
Какие символы должны быть закодированы как HTML-сущности?
Как минимум те пять, которые значимы для HTML-парсера: & (&), < (<), > (>), " (") и ' (’). Сначала закодировать амперсанд крайне важно, иначе существующие сущности окажутся дважды закодированными. Прочие символы необязательны и нужны только для передачи, состоящей лишь из ASCII.
Почему мой текст показывает & вместо &?
Это двойное кодирование: амперсанд был экранирован дважды, обычно потому, что уже закодированный HTML был ещё раз пропущен через кодировщик. Декодирование текста за один проход возвращает &amp; обратно к &, а второй проход даёт буквальный & — этот инструмент декодирует один уровень за запуск, так что вы можете раскручивать его шаг за шагом.