Кодування

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 просто не існує — там для решти символів використовують числові посилання.

Навіщо взагалі кодувати ці символи в XML?

Символи <, > та & мають спеціальне синтаксичне значення в XML і ламають структуру документа, якщо трапляються в тексті чи атрибуті без екранування. Кодування в сутності дозволяє безпечно зберегти такий вміст, не порушуючи парсинг.

Чим "Основні" сутності відрізняються від "Усіх символів"?

Режим "Основні" кодує лише 5 стандартних 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 перед тим, як покласти в текстове поле.