Кодирование

XML Entities Encode/Decode

Кодирование и декодирование XML-сущностей — 5 стандартных (амперсанд, угловые скобки, апостроф, кавычки) и числовые ссылки на символы.

XML, в отличие от HTML, строго требует экранирования пяти спецсимволов (&, <, >, ', "), иначе документ считается невалидным. Инструмент кодирует и декодирует эти сущности, а также числовые ссылки на символы.

Как пользоваться

Типичные сценарии

Что стоит помнить

XML-парсеры значительно строже HTML: одна неэкранированная сущность делает весь документ невалидным, а не только искажает один элемент.

CDATA-секции (<![CDATA[...]]>) — альтернатива экранированию для больших блоков текста, позволяющая вставить произвольное содержимое без замены каждого спецсимвола по отдельности.

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

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

Чем XML-сущности отличаются от HTML-сущностей?

Стандарт XML предопределяет всего 5 именованных сущностей: &lt;, &gt;, &amp;, &apos; и &quot;, тогда как в HTML их значительно больше (например, &nbsp; или &copy;). Для любых других символов в XML нужно использовать числовые ссылки вида &#38; или &#x26;.

Зачем вообще экранировать текст в XML?

Символы <, > и & имеют особое значение в разметке и без экранирования могут сломать структуру документа или сделать его невалидным. Кодирование в сущности гарантирует, что текст останется корректным содержимым, а не будет воспринят как теги или атрибуты.

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

Режим «Основные» кодирует только пять предопределённых XML-сущностей, а «Все символы» дополнительно переводит в числовые ссылки не-ASCII символы — это полезно, если документ должен оставаться строго ASCII-совместимым.

Что такое CDATA и когда использовать её вместо сущностей?

Секция &lt;![CDATA[...]]&gt; позволяет вставить блок текста без экранирования < и & — удобно для больших фрагментов кода или HTML внутри XML. Исключение — последовательность ]]>, которая закрывает CDATA и не может встречаться в самом содержимом.

Одинаково ли XML-парсеры обрабатывают невалидные сущности?

Нет, и в отличие от браузеров, которые «прощают» ошибки в HTML, XML-парсеры строгие: один неэкранированный амперсанд или угловая скобка делает весь документ невалидным, и обработка прекращается с ошибкой.

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

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

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

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

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

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

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

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

Почему символы &lt; &gt; &amp; нужно экранировать и как это предотвращает поломку разметки.

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 перед тем, как поместить в текстовое поле.