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

Экранируйте текст, чтобы его можно было безопасно вставить в HTML, или превратите сущности вроде & и € обратно в читаемые символы.

Работает в браузереБез регистрацииНичего не загружается

Закодировано

Как пользоваться: Кодировщик HTML-сущностей

  1. Выберите Кодировать, чтобы экранировать текст, или Декодировать, чтобы превратить сущности обратно в символы.
  2. При кодировании выберите, что экранировать: только спецсимволы HTML, также все не-ASCII символы или всё, кроме букв и цифр.
  3. Выберите именованные сущности (é), десятичные (é) или шестнадцатеричные (é).
  4. Скопируйте результат. При декодировании неизвестные сущности перечисляются, чтобы вы заметили опечатки.

Зачем экранировать HTML?

Пять символов имеют в HTML особый смысл: & начинает сущность, < и > ограничивают теги, а " и ' закрывают значения атрибутов. Если пользовательский текст с ними вставить в страницу без экранирования, он может сломать вёрстку или, хуже того, внедрить скрипты (межсайтовый скриптинг, XSS). Экранирование превращает их в &amp;, &lt;, &gt;, &quot; и &#x27;, которые браузер показывает как текст.

Именованные, десятичные и шестнадцатеричные сущности

Любой символ Unicode можно записать числовой ссылкой: десятичной &#8364; или шестнадцатеричной &#x20AC; для €. У многих распространённых символов есть и читаемое имя, например &euro;, &copy; или &nbsp;. Числовые ссылки работают везде, включая XML, где определено всего пять именованных сущностей. Именованные сущности легче читать в исходном коде.

Нужно ли кодировать не-ASCII символы?

Нет, если страница отдаётся в UTF-8, как почти все современные сайты (<meta charset="utf-8">). Символы вроде é, ü или 日本 можно писать напрямую. Кодировать их полезно для устаревших систем, шаблонов писем или когда какой-то этап обработки портит не-ASCII текст.

Экранирование зависит от контекста

Экранирование HTML-сущностями защищает текст внутри элементов и атрибутов в кавычках. Его недостаточно для значений внутри блоков <script>, встроенных обработчиков событий, CSS или URL — у каждого из них своё кодирование. Предпочитайте автоэкранирование вашего фреймворка (React, Vue, Jinja, Blade) ручной сборке строк.

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

Какие символы обязательно экранировать в HTML?
В текстовом содержимом обязательны & и <. В значениях атрибутов экранируйте также использованную кавычку. Экранировать все пять (& < > " ') — безопасный вариант по умолчанию.
Что такое &amp;nbsp;?
Неразрывный пробел (U+00A0). Выглядит как пробел, но не допускает переноса строки и не схлопывается с соседними пробелами.
Почему &amp;copy2024 декодируется в ©2024?
Ради обратной совместимости браузеры декодируют несколько устаревших сущностей, например &copy, &amp и &lt, даже без завершающей точки с запятой. Этот декодер следует тому же правилу. В своём HTML всегда ставьте точку с запятой.
Апостроф — это &amp;apos; или &amp;#39;?
&apos; допустим в HTML5 и XML, но не в HTML 4, поэтому числовые &#39; или &#x27; — самый совместимый вариант, и именно его выдаёт этот кодировщик.

Похожие инструменты