Кодирование

HTML Entities Encode/Decode

Кодирование и декодирование HTML-сущностей — безопасное отображение спецсимволов на странице.

HTML entities are a way to write characters that would otherwise break markup (<, >, &) or have no keyboard key, as safe text sequences like &lt; or &amp;. This tool encodes and decodes such entities right in your browser.

How to use it

Common uses

Things to keep in mind

HTML entity escaping only protects against XSS via a page's text content — it does not protect a JavaScript context (innerHTML, eval) or href/src attributes containing unvalidated URLs.

Encode exactly at the point where text gets inserted into HTML, not ahead of time when saving to a database — otherwise the data gets mangled when reused outside an HTML context.

Статья об этом инструменте: HTML Entities: как безопасно выводить спецсимволы на странице

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

Зачем кодировать текст в HTML-сущности?

Это защищает от поломки разметки и XSS, когда пользовательский текст выводится на странице: символы вроде <, > и & в незакодированном виде браузер может воспринять как часть HTML-тегов.

В чём разница между именованными и числовыми сущностями?

Именованная сущность — это мнемоническое обозначение вроде &amp;, а числовая ссылается на код символа: десятичная &#38; или шестнадцатеричная &#x26;. Все три формы означают один и тот же символ, но именованные поддерживаются не для всех символов, а числовые — всегда.

Что означает режим «Все символы»?

В отличие от режима «Основные», который кодирует только символы, значимые для разметки (<, >, &, кавычки), режим «Все символы» переводит в сущности вообще всё, что имеет именованный эквивалент, включая не-ASCII символы.

Нужно ли экранировать текст в атрибуте иначе, чем в теле страницы?

Основные символы (<, >, &) экранируют одинаково, но внутри атрибута в кавычках дополнительно критично экранировать именно тот тип кавычек, которым ограничен атрибут, — иначе значение «разорвётся» раньше, чем ожидалось.

Защищает ли HTML-экранирование от всех видов XSS?

Нет. Оно закрывает самый распространённый вектор — вставку текста в HTML-содержимое, но не защищает от XSS через JavaScript-контекст (например, innerHTML с последующим выполнением кода) или невалидированные URL в href/src.

Статьи: Кодирование

Base64: зачем нужно кодирование и как оно работает

Как Base64 превращает бинарные данные в текст ASCII и где это реально нужно.

Base32: чем отличается от Base64 и когда удобнее

Регистронезависимый алфавит Base32 и сценарии, где он удобнее Base64.

URL Encode/Decode: percent-encoding в ссылках

Как спецсимволы в адресной строке и query-параметрах превращаются в %XX-последовательности.

JWT: структура токена и что значит «декодировать» JWT

Header, payload и signature JWT-токена и почему декодирование — не то же самое, что проверка подписи.

Unicode Escape: что означают последовательности \uXXXX

Откуда в JSON и JS-строках берутся последовательности вида \u0041 и что они означают.

ROT13 и шифр Цезаря: простая замена символов

Почему сдвиг на 13 букв делает ROT13 симметричным и зачем его вообще используют сегодня.

Punycode: как домены с кириллицей работают в DNS

Как домен вроде «пример.рф» превращается в ASCII-запись с префиксом xn--.

Азбука Морзе: как текст превращается в точки и тире

Принцип кодирования букв точками и тире и где азбука Морзе применяется сейчас.

Data URI: когда встраивать изображения прямо в код

Как data:-URI встраивает содержимое файла прямо в HTML или CSS и когда это оправдано.

Gzip + Base64: сжатие данных для передачи текстом

Зачем сжатые бинарные данные ещё и кодируют в Base64 перед тем, как поместить в текстовое поле.

XML Entities: экранирование символов в XML-документах

Пять обязательных XML-entity, без которых документ ломается при парсинге.