Escapar e desescapar strings
Escapa ou desescapa uma string para JSON, JavaScript, template literals, SQL, CSV, atributos HTML, expressões regulares e URLs, no teu navegador.
Escapar não substitui as consultas parametrizadas (prepared statements). Usa este resultado para ler ou depurar SQL, nunca para construir consultas a partir de dados introduzidos pelos utilizadores.
Como escapar ou desescapar uma string
- Escolhe o destino em Formato: string JSON, string JavaScript, template literal JavaScript, literal de texto SQL, campo CSV, valor de atributo HTML, expressão regular ou componente de URL.
- Escreve ou cola o teu texto na caixa de entrada.
- Clica em Escapar para transformar texto simples num literal seguro, ou em Desescapar para transformar um literal de volta em texto simples. O resultado atualiza-se enquanto escreves, no último sentido que escolheste.
- Ajusta as opções apresentadas para o formato: Acrescentar aspas à volta, Escapar caracteres não ASCII ou Espaços como + (dados de formulário).
- Clica em Copiar, ou em Usar o resultado como entrada para inverteres a operação e confirmares a ida e volta.
O número de caracteres antes e depois aparece por baixo dos botões. Tudo corre no teu navegador; nada é enviado.
O que faz cada formato
- String JSON: escapa
",\e os caracteres de controlo (\n,\t,\u0000…), exatamente comoJSON.stringify. Com Escapar caracteres não ASCII, cada carácter acima de U+007E passa a\uXXXX(os emojis passam a um par de surrogates como😀). Ao desescapar, o texto é aceite com ou sem as aspas duplas, e as quebras de linha reais são toleradas. - String JavaScript (‘…’): escapa a barra invertida, a plica, as quebras de linha e os caracteres de controlo, bem como U+2028 e U+2029, que estragam motores mais antigos. Ao desescapar, percebe
\x41,A,\u{1F600}, escapes octais antigos como\101e continuações de linha. - Template literal JavaScript (`…`): escapa os acentos graves, as barras invertidas e
${, para que nenhuma expressão seja avaliada; as quebras de linha e as tabulações ficam como estão, porque os template literals as permitem. - Literal de texto SQL (‘…’): duplica as plicas (
O'Brien→'O''Brien'), como no SQL padrão. Ao desescapar, recusa uma plica que não esteja duplicada. As barras invertidas não são tocadas: o MySQL no modo predefinido também trata\como carácter de escape, por isso confirma as regras da tua base de dados. - Campo CSV (RFC 4180): envolve o campo em aspas duplas e duplica as aspas interiores quando contém uma vírgula, um ponto e vírgula, uma tabulação, aspas, uma quebra de linha ou espaços no início ou no fim. Acrescentar aspas à volta força as aspas.
- Valor de atributo HTML: substitui
&,<,>,"e'por entidades, o que é seguro em atributos entre aspas simples ou duplas. Ao desescapar, descodifica as referências numéricas e&,<,>,",'e . - Expressão regular (texto literal): escapa com barra invertida
. * + ? ^ $ { } ( ) | [ ] \ /, além das quebras de linha e tabulações, para que o padrão corresponda ao texto literalmente. O resultado é válido com ou sem a flagu. - Componente de URL (percent-encoding): funciona como
encodeURIComponent, codificando como bytes UTF-8 tudo exceto letras, algarismos e- _ . ! ~ * ' ( ). Espaços como + (dados de formulário) usa a convençãoapplication/x-www-form-urlencoded.
Escapar não é uma barreira de segurança para SQL
Quando escolhes SQL, a ferramenta mostra um lembrete que vale a pena repetir: a verdadeira solução para a injeção de SQL é uma consulta parametrizada (prepared statement), em que o valor é enviado separadamente do texto SQL. Escapar à mão é frágil: depende da base de dados, do conjunto de caracteres da ligação e de definições como o tratamento das barras invertidas no MySQL. Usa este resultado para ler registos, escrever dados de teste ou depurar uma consulta, nunca para construir consultas a partir de dados introduzidos pelos utilizadores.
No CSV, a ferramenta também avisa quando um valor começa por =, +, - ou @: uma folha de cálculo pode executá-lo como fórmula (injeção CSV). As aspas não impedem isso; a mitigação habitual é prefixar o valor com um apóstrofo ou um espaço.
Perguntas frequentes
Qual é a diferença entre uma string JSON e uma string JavaScript?
O JSON só permite aspas duplas e um pequeno conjunto de escapes (\" \\ \/ \b \f \n \r \t \uXXXX). O JavaScript também aceita plicas, acentos graves, \x41, \u{…}, \v e \0. Os escapes JSON válidos são JavaScript válido, mas o contrário não é verdade.
Porque é que desescapar falha com «sequência de escape inválida»?
O texto contém uma barra invertida seguida de algo que o formato não permite, como \u12 com menos de quatro algarismos hexadecimais, ou uma barra invertida isolada no fim. A mensagem de erro mostra a sequência com problema.
O CSV precisa de aspas em todos os campos?
Não. O RFC 4180 só exige aspas quando o campo contém uma vírgula, aspas duplas ou uma quebra de linha. Esta ferramenta também põe entre aspas os pontos e vírgulas, as tabulações e os espaços no início ou no fim, porque muitas folhas de cálculo os usam como separadores ou os cortam.
Escapar atributos HTML chega para prevenir XSS?
É correto para texto colocado dentro de um valor de atributo entre aspas. Não chega para atributos que são eles próprios código ou URLs, como onclick ou href="javascript:…"; esses precisam de validação, não apenas de escape.
O meu texto é enviado para um servidor?
Não. Todas as conversões correm localmente no teu navegador, por isso podes colar sem receio valores de configuração ou dados que não partilharias.
Ferramentas relacionadas
- Codificador e descodificador de URL Codificador e descodificador de URL gratuito. Codifica parâmetros ou URLs completos, descodifica sequências %XX e trata + como espaço, no navegador.
- Codificador/descodificador de entidades HTML Converte caracteres especiais em entidades HTML (com nome, decimais ou hex) ou descodifica qualquer entidade, com a lista completa de 2231 nomes HTML5.
- Formatador e validador de JSON Formatador e validador de JSON gratuito que formata, minifica e verifica JSON no teu navegador, com os erros de sintaxe indicados por linha e coluna.
- Testador de regex Testa expressões regulares JavaScript em tempo real, com correspondências destacadas, grupos de captura, substituição e explicação de cada parte.