Кодировщик / декодировщик HTML-сущностей
Экранируйте специальные символы в HTML-сущности или раскодируйте сущности обратно в обычный текст прямо во время ввода.
Зачем нужны HTML-сущности
Некоторые символы зарезервированы самим HTML.
Символы вроде <, > и & имеют особое значение в HTML-разметке; ввод их напрямую в содержимом страницы может сломать страницу или, что хуже, позволить интерпретировать пользовательский ввод как исполняемую разметку. Кодирование их в сущности вроде < безопасно отображает символ как обычный текст.
Именованные vs числовые сущности
& и & оба декодируются в один и тот же амперсанд; именованные сущности существуют для распространённых символов, а числовые сущности (десятичные или шестнадцатеричные) могут представлять любой символ Юникода. Этот инструмент декодирует обе формы.
Как это работает
Кодирование — это простая замена: регулярное выражение заменяет пять зарезервированных в HTML символов (&, <, >, ", ') на их сущности. Опция «кодировать все не-ASCII символы» идёт дальше и преобразует каждый символ за пределами диапазона ASCII в числовую ссылку с помощью codePointAt, что полезно, когда вывод должен пройти через ASCII-only канал, например старую систему email-шаблонов или конфигурационный файл, портящий UTF-8.
Декодирование использует приём, который стоит знать: строка присваивается свойству innerHTML отсоединённого элемента <textarea>, а затем считывается обратно из его .value. Это перекладывает работу на собственный HTML-парсер браузера, который уже знает более 2000 именованных сущностей, а также все десятичные и шестнадцатеричные числовые формы, поэтому инструменту не нужна таблица соответствий, которая может устареть. Именно поэтому здесь безопасно декодировать недоверенный ввод: содержимое textarea всегда обрабатывается как обычный текст, поэтому декодированный <script> становится текстом внутри тега script, и ничего никогда не выполняется.
Оба направления выполняются при каждом нажатии клавиши в JavaScript этой страницы. Откройте вкладку Network в DevTools во время ввода: запросов нет, ваша разметка никогда не покидает браузер.