Todos os artigos

String Escape: por que o mesmo texto precisa ser escapado de forma diferente

O português usa diacríticos como til, cedilha e acento agudo — "coração" contém três caracteres fora do intervalo ASCII básico. Com a opção "escapar não-ASCII como \uXXXX" ativada, essa palavra vira coração: uma sequência inteiramente ASCII. Isso é útil para APIs antigas ou mal configuradas que exigem JSON estritamente ASCII, onde caracteres acentuados inseridos "como estão" podem ser corrompidos por uma codificação incorreta no outro extremo.

Escape em uma string JavaScript/JSON

Em literais de string do JS e em JSON, caracteres especiais são escapados com uma barra invertida: \" para aspas, \n para quebra de linha, \\ para a própria barra invertida. O JSON também exige que todas as strings usem aspas duplas — diferente do JS, onde aspas simples também são válidas.

Escape em comandos de shell

Na linha de comando, caracteres especiais incluem espaço, aspas, cifrão, asterisco e outros — eles têm significado especial para o shell. Um espaço dentro de um argumento precisa ser escapado ou o argumento inteiro colocado entre aspas, senão o shell o divide em dois argumentos separados.

Escape em expressões regulares

Em expressões regulares, caracteres como ponto, asterisco ou parênteses têm significado especial (qualquer caractere, um quantificador, um grupo). Para buscá-los literalmente, e não como metacaracteres, coloca-se uma barra invertida antes: \. encontra um ponto literal, não "qualquer caractere".

Por que cada contexto precisa do seu próprio escape

Erros de "escape duplo" ou "escape insuficiente" estão entre as causas mais comuns de código quebrado ao inserir texto do usuário (por exemplo, um caminho de arquivo com espaço) em um comando ou string. O escape correto depende de onde exatamente o texto é inserido, não do texto em si.

Para que serve

  • Preparar texto do usuário em português, com acentos e cedilhas, para inserção segura em uma requisição JSON.
  • Construir um comando de shell com um argumento dinâmico sem risco de injeção de comandos.
  • Escapar caracteres especiais antes de usar o texto como padrão literal em uma expressão regular.

Escape duplo em contextos aninhados

Quando o texto passa por dois contextos em sequência — por exemplo, uma string é inserida em JSON, e esse JSON é passado como argumento de um comando de shell — o escape precisa ser aplicado na ordem correta: primeiro para o contexto interno (JSON), depois para o externo (shell). Inverter a ordem ou pular um nível é uma causa comum de uma string "corretamente escapada" ainda quebrar na prática.

Experimentar a ferramenta