DevToolPal
RU

Экранирование строк

Экранирует строки и снимает экранирование для JSON, JavaScript, Java/C#, Python, SQL, CSV, XML, регулярных выражений и команд оболочки.

Работает локально, без загрузки на сервер

Параметры

Режим

Ввод

Символов: 0 · 0 B

Результат

Символов: 0 · 0 B

Что делает инструмент

Инструмент экранирования строк переводит текст в форму, которую можно поместить внутрь строкового литерала, и возвращает экранированные строки к обычному тексту. Поддерживаются девять вариантов: JSON, JavaScript, Java и C#, Python, строковые литералы SQL, поля CSV, текст и атрибуты XML, регулярные выражения и команды POSIX-оболочки. Каждый следует правилам своего языка, так что результат можно вставить прямо в код без синтаксических ошибок.

Типичные задачи: записать многострочное сообщение или путь Windows в JSON-конфиг, встроить фрагмент HTML в строку JavaScript, заключить в кавычки имя файла с пробелами для shell-скрипта или превратить поисковую фразу вроде price (USD) в регулярное выражение, которое находит её буквально.

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

  1. Выберите Экранировать или Снять экранирование.
  2. Выберите язык или формат.
  3. Вставьте текст в поле ввода или нажмите Пример. Результат обновляется по мере ввода.
  4. Скопируйте результат или нажмите Использовать как ввод, чтобы выполнить обратное преобразование и убедиться, что получается исходный текст.

Для 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 без изменений.

› Загружается ли мой текст?

Нет. Экранирование и его снятие выполняются в браузере, на сервер ничего не отправляется.