Что делает инструмент
Инструмент экранирования строк переводит текст в форму, которую можно поместить внутрь строкового литерала, и возвращает экранированные строки к обычному тексту. Поддерживаются девять вариантов: 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 без изменений.
› Загружается ли мой текст?
Нет. Экранирование и его снятие выполняются в браузере, на сервер ничего не отправляется.