Кодирование
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 < or &. This tool encodes and decodes such entities right in your browser.
How to use it
- Encode: paste text and characters like <, >, &, and quotes get replaced with their matching entities.
- Decode: paste HTML containing entities (&, ©, etc.) to see the plain text.
- Both named entities (&) and numeric ones (& or &) are supported.
Common uses
- Safely displaying user text (a comment, a message) on a page without risking broken markup or an injected script.
- Embedding HTML code samples in an article or documentation so the browser shows them as text instead of rendering them.
- Decoding content copied from another site where the characters arrived already entity-encoded.
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-тегов.
В чём разница между именованными и числовыми сущностями?
Именованная сущность — это мнемоническое обозначение вроде &, а числовая ссылается на код символа: десятичная & или шестнадцатеричная &. Все три формы означают один и тот же символ, но именованные поддерживаются не для всех символов, а числовые — всегда.
Что означает режим «Все символы»?
В отличие от режима «Основные», который кодирует только символы, значимые для разметки (<, >, &, кавычки), режим «Все символы» переводит в сущности вообще всё, что имеет именованный эквивалент, включая не-ASCII символы.
Нужно ли экранировать текст в атрибуте иначе, чем в теле страницы?
Основные символы (<, >, &) экранируют одинаково, но внутри атрибута в кавычках дополнительно критично экранировать именно тот тип кавычек, которым ограничен атрибут, — иначе значение «разорвётся» раньше, чем ожидалось.
Защищает ли HTML-экранирование от всех видов XSS?
Нет. Оно закрывает самый распространённый вектор — вставку текста в HTML-содержимое, но не защищает от XSS через JavaScript-контекст (например, innerHTML с последующим выполнением кода) или невалидированные URL в href/src.