bitlvl
RU

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

Вставьте текст для кодирования или сущности для декодирования. Выберите именованные или числовые ссылки. Таблица ниже перечисляет все именованные сущности, известные HTML5, с поиском по имени или символу.

Кодирование

Таблица именованных сущностей

 

Результаты и сообщения этого инструмента выводятся на английском языке.

Когда кодировать

Только пять символов имеют значение в тексте и атрибутах HTML: & начинает сущность, < и > ограничивают теги, а " и ' завершают значения атрибутов. Экранируйте их всякий раз, когда вставляете недоверенный текст в страницу, — и вы защищены от внедрения разметки (XSS в HTML-контексте). Всё остальное, включая буквы с диакритикой, эмодзи и символы, можно писать буквально в документе UTF-8; кодировать их как &eacute; — привычка эпохи Latin-1, которая только затрудняет чтение исходника.

Три способа записать символ

ФормаПримерПримечания
Именованная&eacute; &rarr; &nbsp;2 125 имён в HTML5; читаемы, но в XML без DTD работают только пять базовых.
Десятичная&#233;Работает везде, включая XML и SVG.
Hex&#xE9;Совпадает с нотацией кодовой точки Unicode U+00E9; тоже универсальна.

Ловушки

  • &nbsp; — настоящий символ (U+00A0). Он переживает копирование-вставку как невидимый неразрывный пробел и ломает сравнение строк; инспектор Unicode его находит.
  • Браузеры принимают некоторые устаревшие сущности без точки с запятой (&copy, &amp), поэтому URL вроде ?a=1&copy=2 в неэкранированном атрибуте превращается в ?a=1©=2. В атрибутах всегда пишите &amp;.
  • Двойное кодирование (&amp;lt;) отображается на странице как буквальное &lt;; кодируйте один раз, в момент вывода.
  • В строках JavaScript HTML-сущности не декодируются; используйте там \u00E9 или задавайте textContent и вовсе обходитесь без экранирования.

Вопросы

Что такое &nbsp;?

Неразрывный пробел, U+00A0: пробел, который запрещает перенос строки и не схлопывается с соседними пробелами. Используйте его между числом и единицей измерения (10 км) и больше нигде.

Нужно ли кодировать буквы с диакритикой?

Нет, если страница отдаётся как UTF-8, как и должна любая современная страница. Пишите é напрямую. Кодируйте только тогда, когда файл может быть сохранён в другой кодировке или когда нужно сделать невидимый символ видимым в исходнике.

Какие сущности работают в XML и SVG?

Только &, <, >, " и ', плюс числовые ссылки. Именованные сущности вроде © вызывают ошибку разбора в XML, если не объявлены.

Как показать HTML-код на веб-странице?

Закодируйте его: каждый < становится &lt;, каждый & — &amp;. Вставьте код в поле «Текст» с первым вариантом кодирования и скопируйте HTML-вывод в блок <pre><code>.