DevToolPal
RU

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

Экранирование текста в HTML-сущности вроде < и é или декодирование сущностей обратно в обычный текст.

Работает локально, без загрузки на сервер

Параметры

Режим

Ввод

Символов: 0 · 0 B

Результат

Символов: 0 · 0 B

Что делает инструмент

HTML-сущности — это коды, обозначающие символы, например &lt; для < и &eacute; для é. Этот инструмент экранирует текст в сущности, чтобы его можно было безопасно показать на веб-странице, и декодирует сущности обратно в обычный текст — например, когда вы копируете разметку из CMS или шаблона письма.

При кодировании используется полный список HTML5 из более чем 2000 именованных ссылок, а декодирование понимает именованные, десятичные (&#169;) и шестнадцатеричные (&#xA9;) ссылки точно так же, как браузер.

Как пользоваться

  1. Вставьте текст или HTML в поле Ввод, загрузите файл или нажмите Пример.
  2. Выберите Кодировать или Декодировать.
  3. При кодировании выберите, что кодировать:
    • Только & < > ” ’: минимум, необходимый, чтобы поместить текст в HTML или атрибут.
    • Плюс не-ASCII, именованные: также превращает символы вроде é, © и — в именованные сущности, а всё, у чего нет имени, — в числовые ссылки.
    • Плюс не-ASCII, числовые: то же самое, но всегда числовые (&#xe9;), что также допустимо в XML.
    • Всё, у чего есть имя: кодирует даже знаки препинания вроде . и / — полезно, если система вырезает эти символы.
  4. Скопируйте или скачайте результат. Сделать вводом позволяет снова декодировать его и проверить преобразование туда и обратно.

Пример

<p>Café & "crème brûlée"</p>

при кодировании только спецсимволов превращается в

&lt;p&gt;Café &amp; &quot;crème brûlée&quot;&lt;/p&gt;

а с именованными сущностями для не-ASCII — в

&lt;p&gt;Caf&eacute; &amp; &quot;cr&egrave;me br&ucirc;l&eacute;e&quot;&lt;/p&gt;

Типичные сценарии

Показать фрагмент кода в блоге так, чтобы браузер его не отрисовал; вставить пользовательский текст в HTML-письмо; исправить дважды экранированный текст вроде &amp;amp; (декодировать один раз); сделать файл безопасным для системы, которая принимает только ASCII.

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

› Какие символы обязательно экранировать в HTML?

В тексте — & и <. Внутри значений атрибутов нужно также экранировать кавычку, в которую заключено значение. Экранировать & < > " и ' везде — как сделано здесь по умолчанию — всегда безопасно.

› Какие сущности использовать: именованные или числовые?

И те, и другие работают во всех современных браузерах. Именованные сущности вроде &eacute; легче читать; числовые ссылки вроде &#xe9; работают ещё и в XML и в старых парсерах, знающих лишь несколько имён. На странице в UTF-8 не-ASCII символы обычно вообще не нужно кодировать.

› Понимает ли декодирование сущности без точки с запятой?

Да. Оно следует спецификации HTML, поэтому устаревшие формы вроде &copy без точки с запятой декодируются так же, как в браузере. Неизвестные имена, например &foo;, остаются без изменений.

› Достаточно ли экранирования для защиты от XSS?

Экранирование — правильная защита для текста внутри HTML-элементов и атрибутов в кавычках. Но оно не делает недоверенный ввод безопасным внутри блоков script и style, атрибутов-обработчиков событий или URL — там нужно кодирование с учётом контекста.