Що робить інструмент
Інструмент екранування рядків перетворює текст на форму, яку можна помістити всередину рядкового літерала, і повертає екрановані рядки до звичайного тексту. Підтримуються дев’ять варіантів: JSON, JavaScript, Java і C#, Python, рядкові літерали SQL, поля CSV, текст і атрибути XML, регулярні вирази та команди POSIX-оболонки. Кожен дотримується правил своєї мови, тож результат можна вставити просто в код без синтаксичних помилок.
Типові завдання: записати багаторядкове повідомлення чи шлях Windows у JSON-конфіг, вбудувати фрагмент HTML у рядок JavaScript, узяти в лапки ім’я файлу з пробілами для shell-скрипта або перетворити пошукову фразу на кшталт price (USD) на регулярний вираз, що знаходить її буквально.
Як користуватися
- Оберіть Екранувати або Зняти екранування.
- Оберіть мову чи формат.
- Вставте текст у поле введення або натисніть Приклад. Результат оновлюється під час введення.
- Скопіюйте результат або натисніть Використати як введення, щоб виконати зворотне перетворення й переконатися, що виходить початковий текст.
Для JSON, JavaScript, Java/C# і Python можна також екранувати всі не-ASCII символи й отримати чистий ASCII-рядок, який переживе будь-яке кодування файлу.
Приклад
Той самий рядок, екранований для різних цілей:
Input: He said "hi" in C:\Temp
JSON: He said \"hi\" in C:\\Temp
SQL: He said "hi" in C:\Temp (only ' is doubled)
Regex: He said "hi" in C:\\Temp
Shell: 'He said "hi" in C:\Temp'
Правила для кожного формату
- JSON: екранує лапки, зворотні скісні риски й керівні символи — точно як
JSON.stringify. - JavaScript: додатково екранує одинарні лапки, зворотні апострофи, вертикальну табуляцію та роздільники рядків U+2028 і U+2029.
- Java / C#: екранування зворотною скісною рискою та
\uXXXX; під час зняття екранування також приймаються вісімкові послідовності Java та\xі\Uз C#. - Python: екранування зворотною скісною рискою з
\x,\uі\U; невідомі послідовності залишаються як є. - SQL: подвоює одинарні лапки для стандартних рядкових літералів SQL.
- CSV: бере значення в подвійні лапки й подвоює внутрішні, якщо в ньому є кома, лапка, переведення рядка або пробіли по краях.
- XML: замінює п’ять наперед визначених сутностей; під час зняття екранування також декодує числові посилання на символи.
- Регулярний вираз: ставить зворотну скісну риску перед кожним символом з особливим значенням, щоб шаблон збігався з текстом буквально.
- Оболонка: бере значення в одинарні лапки, всередині яких POSIX-оболонки нічого не розкривають, а внутрішні лапки записує як
'\''.
Часті запитання
› Що означає екранувати рядок?
Деякі символи всередині рядкового літерала мають особливе значення, наприклад лапка, що його завершує, або переведення рядка. Екранування замінює їх безпечною послідовністю, зазвичай зворотною скісною рискою з літерою, щоб рядок можна було вставити в код, запит чи файл, нічого не зламавши.
› Чи треба вставляти лапки навколо рядка?
Ні, вставляйте лише вміст. Екранований результат — це те, що стоїть між лапками в коді. Для CSV та оболонки, де в лапки береться все значення, інструмент сам додає зовнішні лапки, коли вони потрібні.
› Чи достатньо екранування SQL для захисту від SQL-ін'єкцій?
Подвоєння одинарних лапок дає коректний рядковий літерал, що зручно, коли ви пишете запит вручну чи готуєте скрипт міграції. У коді застосунку завжди використовуйте параметризовані запити або підготовлені вирази, а не збирайте SQL з рядків.
› Чому під час зняття екранування з'являється помилка про невідому послідовність?
Кожна мова допускає свій набір екранувань. Наприклад, у JSON немає \x і \0, тому інструмент показує позицію першої послідовності, яку обрана мова відхилила б. Python, як і його інтерпретатор, залишає невідомі послідовності на кшталт \d без змін.
› Чи завантажується мій текст?
Ні. Екранування та його зняття виконуються в браузері, на сервер нічого не надсилається.