onlinetools.dev

HTML-сущности: кодирование / декодирование

Экранируйте текст для HTML или превращайте &-сущности обратно в символы

Работает локально
loading…
Об этом инструменте

Экранируйте текст для безопасного включения в HTML — & становится &amp;amp;, < становится &amp;lt; — или декодируйте текст, полный сущностей, обратно в читаемые символы: поддерживаются именованные сущности (&amp;rarr;), десятичные (&amp;#169;) и шестнадцатеричные (&amp;#xA9;) числовые ссылки.

Кодирование предлагает два уровня: пять ключевых символов, ломающих структуру HTML (&amp; &lt; &gt; " '), — этого достаточно для корректности, — либо всё не-ASCII, что полезно, когда какой-то инструмент в цепочке между вами и страницей портит UTF-8. Режим «только числовые» пропускает именованные сущности ради максимальной совместимости со строгими XML-парсерами, которые гарантируют лишь пять предопределённых.

Декодер — это повседневная половина: вставьте наскрапленный фрагмент или ответ API, полный &amp;#x27;, и получите чистый текст. Неизвестные имена сущностей проходят нетронутыми, а не угадываются.

Частые вопросы

Какие символы обязательно экранировать в HTML?
В текстовом содержимом: & и <. В значениях атрибутов: ещё и кавычка, ограничивающая атрибут (" или '). Экранировать > принято, но строго не обязательно. Всё остальное может появляться в документе UTF-8 буквально.
Является ли кодирование сущностей защитой от XSS?
Экранирование пяти структурных символов — это ядро экранирования вывода в HTML-контексте, да — но только для текстовых и атрибутных контекстов HTML. URL, строки JavaScript и CSS требуют своих контекстно-специфичных кодировок; одно лишь экранирование сущностей не делает произвольную инъекцию безопасной там.
Именованные или числовые сущности — какие выводить?
Числовые ссылки (&amp;#xE9;) работают в любом парсере HTML и XML. Именованные сущности читабельнее, но XML предопределяет только пять, поэтому &amp;eacute; ломает строгий конвейер XML/XHTML. Если сомневаетесь — числовые.
Почему в моих данных встречается &amp;amp;#39; (двойное кодирование)?
Два слоя закодировали по разу: &amp; из первого кодирования был сам экранирован вторым проходом. Декодируйте здесь дважды, чтобы восстановить текст, а затем найдите и исправьте слой, который не должен кодировать.
Похожие инструменты