bitlvl
ES

Herramienta de escape de cadenas

Escribe una cadena una vez y léela escapada para cada contexto a la vez, o elige un formato y pega algo para desescapar.

 

Los resultados y mensajes de esta herramienta se muestran en inglés.

Escapar depende del contexto

Una cadena nunca está «escapada» en abstracto; se escapa para un sitio concreto en el que se va a insertar, y cada sitio tiene sus reglas. El mismo texto necesita \" en JSON, '' en SQL, '\'' en una shell y " en HTML. Usar el equivocado es como nacen los fallos de inyección: escapar para HTML antes de meter texto en una cadena de JavaScript, o escapar para shell con comillas dobles dejando $ activo.

ContextoQué hay que escaparCómo
Cadena JSON" \ y caracteres de control\" \\ \n \t \u00XX
Shell, comillas simples''\'' (cerrar, comilla literal, reabrir)
Shell, comillas dobles" \ $ ` y ! en bash interactivobarra invertida
Literal SQL''' (MySQL también acepta \')
Regex. * + ? ^ $ { } ( ) [ ] | \ /barra invertida
C / Go / Rust / Java" \ salto de línea tab\" \\ \n \t \xHH \uHHHH
Campo CSV, " salto de líneaentrecomillar, duplicar las comillas
Texto HTML / XML& < > " '&amp; &lt; &gt; &quot; &#39; / &apos;
YAMLTodo lo ambiguo: yes, no, 1.0, * o & iniciales, dos puntosEntre comillas dobles con escapes JSON

La shell en particular

Las comillas simples son el único entrecomillado totalmente seguro en shells POSIX: nada dentro se interpreta, y el único carácter que no puede aparecer es la propia comilla simple; se escribe terminando la cadena, añadiendo una comilla escapada y volviendo a empezar: 'it'\''s'. Las comillas dobles siguen expandiendo $variables, `comandos` y \, así que son para cuando quieres expansión. Si pasas datos desde código, no construyas líneas de comandos: usa un array de argumentos (execve, subprocess.run([...]), exec.Command) y escapar sobra.

SQL en particular

Duplicar las comillas es SQL correcto, pero no es como las aplicaciones deberían pasar valores. Las consultas parametrizadas ($1, ?, :name) envían el valor separado de la sentencia y hacen imposible la inyección. Usa el escapador SQL para consultas ad hoc en una consola, no en el código.

Preguntas

¿Cómo meto una comilla simple en una cadena de shell con comillas simples?

Termina la cadena, añade una comilla escapada, vuelve a empezar: 'it'\''s'. O usa $'it\'s' en bash/zsh, que admite escapes con barra invertida.

¿Por qué mi JSON muestra \u00e9 en vez de é?

Algunos codificadores escapan todo lo no ASCII por seguridad en canales de 7 bits. Sigue siendo válido y se decodifica a la misma cadena. JSON.stringify en JavaScript y json.dumps con ensure_ascii=False en Python conservan los caracteres.

¿Cuál es la diferencia entre escapar y codificar?

Escapar protege unos pocos caracteres especiales para que el texto pueda ir dentro de una sintaxis; codificar (Base64, URL) convierte toda la cadena a otro alfabeto. La codificación Base64 y URL están aquí porque a menudo hacen falta a la vez.

¿Puedo escapar para una regex en un lenguaje concreto?

El escapador de regex cubre los metacaracteres que comparten todos los motores habituales (PCRE, JavaScript, Python, Go RE2, Java). Dentro de una clase de caracteres [] solo importan ] \ ^ y -; la herramienta escapa de forma conservadora para que el resultado funcione en todas partes.