Los signos de apertura del español, ¿ y ¡, no son ASCII y en teoría podrían escaparse como cualquier otro carácter no latino: «¿Cómo estás?» se convierte en ¿Cómo estás? si se activa el escapado de unicode. En la práctica casi nadie lo hace, porque ¿ y ¡ suelen viajar sin problemas por UTF-8 moderno — pero la opción sigue siendo útil para sistemas antiguos o APIs que exigen JSON estrictamente ASCII, donde de otro modo esos signos (y las tildes de «cómo» y «estás») se corromperían silenciosamente.
Escapado en una cadena de JavaScript/JSON
En los literales de cadena de JS y en JSON, los caracteres especiales se escapan con una barra invertida: \" para una comilla, \n para un salto de línea, \\ para la propia barra invertida. JSON además exige que todas las cadenas usen comillas dobles, a diferencia de JS, donde también se permiten las simples.
Escapado en comandos de shell
En la línea de comandos, los caracteres especiales incluyen el espacio, las comillas, el signo de dólar, el asterisco y otros: tienen un significado especial para el shell. Un espacio dentro de un argumento de comando debe escaparse o el argumento entero debe ir entre comillas, o el shell lo dividirá en dos argumentos separados.
Escapado en expresiones regulares
En las expresiones regulares, caracteres como el punto, el asterisco o los paréntesis tienen un significado especial (cualquier carácter, un cuantificador, un grupo). Para buscarlos literalmente y no como metacaracteres, se antepone una barra invertida: \. busca un punto literal, no «cualquier carácter».
Por qué cada contexto necesita su propio escapado
Los errores de «doble escapado» o «escapado insuficiente» son de las causas más comunes de código roto al insertar texto de usuario (por ejemplo, una ruta de archivo con un espacio) en un comando o una cadena. El escapado correcto depende de dónde se inserta exactamente el texto, no del texto en sí.
Para qué sirve
- Preparar texto de usuario en español, tildes y signos de apertura incluidos, para insertarlo de forma segura en una petición JSON.
- Construir un comando de shell con un argumento dinámico sin riesgo de inyección de comandos.
- Escapar caracteres especiales antes de usar un texto como patrón literal en una expresión regular.
Doble escapado en contextos anidados
Si el texto pasa por dos contextos seguidos — por ejemplo, una cadena se inserta en JSON, y ese JSON se pasa como argumento de un comando de shell — hay que escapar en el orden correcto: primero para el contexto interno (JSON), luego para el externo (shell). Un orden invertido o un nivel omitido es una causa habitual de que una cadena «correctamente escapada» siga fallando en la práctica.