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

Экранируйте специальные символы в строках для JSON, JavaScript, Java, Python или XML — и деэкранируйте их обратно. Незаменимо при работе со строковыми литералами в коде.

Возможности

Экранирование JSON
Экранирование JavaScript
Экранирование Java
Экранирование Python
Экранирование XML

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

1. Выберите язык (JSON, JavaScript, Java, Python, XML).

2. Выберите режим «Экранировать» или «Деэкранировать».

3. Вставьте строку и скопируйте результат.

Об этом инструменте

Специальные символы — кавычки, обратные косые черты, переносы строк — нужно записывать escape-последовательностями, прежде чем помещать их в строковый литерал в коде или данных. Правила в разных языках отличаются, и именно здесь скопированный текст вызывает синтаксические ошибки и ломает конфигурации. Этот инструмент экранирует текст и снимает экранирование для пяти целей: JSON, JavaScript, Java, Python и XML. Экранирование JSON следует JSON.stringify, поэтому кавычки, обратные косые черты и управляющие символы превращаются в \", \\, \n и последовательности \u; режимы JavaScript, Java и Python обрабатывают кавычки, обратные косые черты и распространённые управляющие символы для строковых литералов своих языков; XML превращает &, <, >, " и ' в мнемоники. Вставьте текст, выберите язык и направление и скопируйте результат в код.

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

Когда нужно экранировать строку?
Всякий раз, когда текст помещается в строковый литерал или формат данных, где некоторые символы являются частью синтаксиса, — например, кавычка внутри значения JSON, обратная косая черта в пути Windows внутри JavaScript или амперсанд в XML.
Чем экранирование JSON отличается от экранирования JavaScript?
Строки JSON должны быть в двойных кавычках, а управляющие символы экранируются как \n, \t или \u00XX. JavaScript допускает также строки в одинарных кавычках и шаблонные строки, поэтому его экранирование дополнительно обрабатывает одинарные кавычки и может записывать управляющие символы как \x-последовательности.
Как выглядят переносы строк после экранирования?
Настоящий перенос строки превращается в два символа \n (а возврат каретки — в \r), и весь текст помещается в одну строку кода. При снятии экранирования они снова становятся настоящими переносами.
Достаточно ли экранирования для защиты от атак внедрения?
Экранирование под нужный контекст помогает, но для SQL используйте параметризованные запросы, для HTML — шаблонизатор фреймворка, а для команд оболочки не собирайте строки из пользовательского ввода. Ручное экранирование легко сделать неправильно.
Почему при снятии экранирования некоторые последовательности не меняются?
Преобразуются только последовательности, допустимые в выбранном языке. Если строка экранировалась для другого языка — например, мнемоники XML в режиме JSON, — сначала переключитесь на соответствующий режим.

Похожие инструменты