OpenReplay Logo
12k
12k

Кодировщик/декодировщик HTML-сущностей

Кодируйте и декодируйте HTML-сущности онлайн — именованные, десятичные или шестнадцатеричные — обработка выполняется локально, поэтому ничто из вставленного вами никогда не покидает ваш браузер.

Вывод
Область
Обрабатывается локально

Об этом инструменте

HTML-сущности — это управляющие последовательности, представляющие символы, которые иначе были бы разобраны как разметка или не могут быть надёжно набраны — < для знака «меньше», & для амперсанда,   для неразрывного пробела, а также числовые формы, такие как   (десятичная) или   (шестнадцатеричная) для любой кодовой точки Unicode. Кодирование преобразует исходный символ в его сущность; декодирование возвращает сущность обратно к символу. Этот инструмент кодирует в именованном, десятичном или шестнадцатеричном выводе и декодирует все три формы, включая распространённый именованный набор и астральные символы, такие как эмодзи.

Используйте инструмент, чтобы безопасно встраивать строки, созданные пользователями, образцы кода или цитаты в HTML, не ломая страницу и не открывая дыру XSS; чтобы исправить текст, пришедший дважды закодированным как &amp;amp; из неправильно настроенного шаблона; чтобы проверить числовую ссылку, например &#8212;, и увидеть, что это длинное тире; или чтобы перевести символы с диакритикой и символы в сущности, состоящие только из ASCII, для старых конвейеров электронной почты и лент. По умолчанию кодирование экранирует только & < > " ', либо каждый не-ASCII символ, когда вы включаете полную область.

Кодирование HTML-сущностей предназначено для безопасного отображения, а не для безопасности — кодируйте в сущности недоверенный ввод в момент его отрисовки в HTML и полагайтесь на настоящий очиститель (sanitizer) плюс Content Security Policy, чтобы остановить XSS.

Часто задаваемые вопросы

В чём разница между именованными, десятичными и шестнадцатеричными HTML-сущностями?

Это три нотации для одного и того же символа. Именованные сущности, такие как ©, читаемы человеком, но существуют только для фиксированного набора символов; десятичные (&#169;) и шестнадцатеричные (&#xA9;) числовые ссылки работают для любой кодовой точки Unicode, поэтому любой символ всегда можно выразить численно.

Какие символы должны быть закодированы как HTML-сущности?

Как минимум те пять, которые значимы для HTML-парсера: & (&amp;), < (&lt;), > (&gt;), " (&quot;) и ' (’). Сначала закодировать амперсанд крайне важно, иначе существующие сущности окажутся дважды закодированными. Прочие символы необязательны и нужны только для передачи, состоящей лишь из ASCII.

Почему мой текст показывает &amp; вместо &?

Это двойное кодирование: амперсанд был экранирован дважды, обычно потому, что уже закодированный HTML был ещё раз пропущен через кодировщик. Декодирование текста за один проход возвращает &amp;amp; обратно к &amp;, а второй проход даёт буквальный & — этот инструмент декодирует один уровень за запуск, так что вы можете раскручивать его шаг за шагом.