Перейти к содержимому

HTML-сущности: кодировать и декодировать спецсимволы

Знак «<» в HTML записывается как &lt;, а неразрывный пробел — &nbsp;: всего 5 символов нужно экранировать всегда, остальные — по желанию. Вставьте текст — получите безопасный код или обратно читаемый текст.

Инструмент

Направление
  • НаправлениеСимволы → сущности
  • Закодировано символов10
  • Длина до → после41 → 86 символов
Закодированы &, <, >, кавычки и типографские знаки (« » — … © и др.). Кириллица оставлена как есть — при UTF-8 в ней нет нужды.
HTML сущности онлайн — кодировать и декодировать спецсимволы
Спецсимволы HTML ⇄ сущности: &amp; &lt; &quot; кавычки-ёлочки, тире, nbsp, числовые коды кириллицы

Как кодировать спецсимволы HTML

Сущность — это запись символа через амперсанд: &имя; для именованных, &#число; для десятичного кода Unicode и &#xHEX; для шестнадцатеричного. Инструмент заменяет пять обязательных символов разметки и типографские знаки на именованные сущности, а при включённом флажке — все символы вне ASCII на числовые коды. Обратный режим превращает любую из трёх форм обратно в символ.

именованная: &laquo; → « десятичная: &#171; → « шестнадцатеричная: &#xAB; → « кириллица (число): &#1055; → П (U+041F = 1055)

Три формы записи одного символа

Разберём вручную фразу «Цена» — 5 €. Ёлочки заменяются на &laquo; и &raquo;, длинное тире — на &mdash;, знак евро — на &euro;. Получается &laquo;Цена&raquo; &mdash; 5 &euro;: 4 замены, длина выросла с 12 до 35 символов. Кириллица не тронута — при кодировке UTF-8 ей ничего не угрожает. Если бы во фразе стояла ссылка <a href="/">, скобки и кавычки стали бы &lt;a href=&quot;/&quot;&gt; — именно так разметку показывают на странице как текст.

Направление инструмент определяет сам: если в тексте есть хотя бы одна сущность вида &name; или &#NNN;, он декодирует, иначе кодирует. Переключатель позволяет задать режим вручную — например, закодировать текст, в котором уже встречается &amp;.

Таблица частых HTML-сущностей

СимволСущностьКодСимволСущностьКод
неразрывный пробел&nbsp;&#160;©&copy;&#169;
&&amp;&#38;®&reg;&#174;
<&lt;&#60;&trade;&#8482;
>&gt;&#62;&euro;&#8364;
&quot;&#34;&#8381;
&apos;&#39;&#8376;
«&laquo;&#171;&#8372;
»&raquo;&#187;&numero;&#8470;
&mdash;&#8212;°&deg;&#176;
&ndash;&#8211;±&plusmn;&#177;
&hellip;&#8230;×&times;&#215;
&bdquo;&#8222;&rarr;&#8594;
&ldquo;&#8220;&ne;&#8800;
&bull;&#8226;&le;&#8804;

У знаков рубля, тенге и гривны именованных сущностей нет — только числовые коды; &apos; и &numero; появились в HTML 5, поэтому для писем и старых систем надёжнее &#39; и &#8470;. Полный список HTML 4 содержит 252 имени, инструмент знает их все плюс частые имена из HTML 5.

Где нужно кодирование

Комментарии и формы на сайте: любой текст от пользователя перед выводом на страницу экранируют, иначе строка <script> выполнится у других посетителей. Примеры кода в статьях и документации — чтобы показать тег <div>, его пишут как &lt;div&gt;. Письма и рассылки — почтовые клиенты хуже браузеров переносят UTF-8, и типографика через сущности выглядит одинаково везде. RSS и XML-фиды — там допустимы только пять предопределённых сущностей (&amp; &lt; &gt; &quot; &apos;), а &nbsp; или &mdash; сломают фид; используйте числовые коды &#160; и &#8212;.

Карточки товаров на маркетплейсах и в 1С часто приходят с «двойным» кодированием — &amp;laquo; вместо «: режим декодирования, применённый дважды, возвращает читаемый текст.

Вопросы и ответы

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

Пять: амперсанд & (&amp;), меньше < (&lt;), больше > (&gt;) в тексте, двойную кавычку " (&quot;) и апостроф ' (&#39;) внутри атрибутов. Без этого браузер примет текст за разметку, а пользовательский ввод превратится в XSS-уязвимость. Остальные сущности — типографика и удобство, а не безопасность.

Нужно ли кодировать кириллицу как &#1055;?

При кодировке страницы UTF-8 — нет: русские буквы хранятся напрямую и занимают 2 байта, а сущность &#1055; — 7. Числовая форма нужна, если файл сохранён в Windows-1251 или ASCII, при вставке в старые CMS и в письмах, где кодировка может «поехать». Включите флажок «все не-ASCII» для такого случая.

Как поставить кавычки-ёлочки и тире в HTML?

Ёлочки — &laquo; и &raquo;, лапки — &bdquo; и &ldquo;, длинное тире — &mdash;, короткое — &ndash;, многоточие — &hellip;, неразрывный пробел — &nbsp;. В UTF-8 те же знаки можно вставить напрямую («», —, …), сущности лишь страхуют от проблем с кодировкой и помогают отличить неразрывный пробел от обычного в коде.

Чем отличаются &#1055; и &#x41F;?

Это одна и та же буква «П»: первая запись — десятичный код Unicode, вторая — шестнадцатеричный (41F = 1055). Обе формы равноправны и поддерживаются всеми браузерами. Именованные сущности (&nbsp;, &copy;) — третья форма, но имена есть лишь у 2 231 символа, а числами записывается любой из почти 155 000.

Почему &#151; превращается в тире, а не в управляющий символ?

Коды 128–159 в HTML трактуются по таблице Windows-1252, а не Unicode: &#151; — это длинное тире, &#150; — короткое, &#133; — многоточие, &#147; и &#148; — кавычки. Такие коды остались от старых редакторов, инструмент декодирует их как браузер, а в новом коде используйте &mdash; или сам символ.

Источники и методика

Обновлено: