Escape um campo CSV: vírgulas, quebras de linha e aspas
Um campo CSV parece simples até que o valor contenha uma vírgula, uma quebra de linha ou aspas.
Executar grátis
Esta ferramenta aplica as regras padrão de escape a um valor textual para que você possa inseri-lo com segurança em uma linha separada por vírgulas. Ela preserva textos comuns, envolve em aspas duplas os campos que precisam de proteção e duplica as aspas internas. O resultado é determinístico, pronto para reutilização e adequado a planilhas, exportações, relatórios gerados e pipelines de dados.
Transforme qualquer texto em um campo CSV seguro
O CSV usa vírgulas e finais de linha para separar campos e registros, o que causa um problema quando esses caracteres fazem parte do próprio valor. Cole ou envie um valor textual, e o recurso devolverá a representação exata que pode ocupar uma única posição em uma linha separada por vírgulas. Um valor simples, como um código de conta, permanece inalterado. Quando há vírgula, retorno de carro, quebra de linha ou aspas duplas, o conteúdo é envolvido em aspas duplas. Cada aspa dupla já presente no valor se torna duas aspas consecutivas, permitindo que um leitor CSV compatível reconstrua o caractere original. A transformação altera apenas a sintaxe necessária para a segurança do CSV: não remove espaços, normaliza finais de linha, reinterpreta números nem muda letras maiúsculas. Esse escopo restrito torna o recurso um componente confiável quando um aplicativo já controla a montagem de linhas e colunas, mas precisa de uma regra correta e reutilizável para cada valor. Texto vazio é válido e continua vazio, pois não requer aspas de proteção em um registro padrão delimitado por vírgulas.
Entenda quando usar aspas e duplicá-las
A distinção essencial é entre conteúdo e estrutura CSV. Uma vírgula no nome de uma empresa não pode virar uma nova coluna, e uma quebra de linha em um endereço não pode iniciar outro registro. Envolver o campo inteiro em aspas duplas informa ao analisador que esses caracteres são conteúdo literal. As aspas duplas exigem uma regra adicional: dentro de um campo CSV entre aspas, cada aspa literal é representada por duas aspas. Esta ferramenta detecta todos esses casos em conjunto. Por exemplo, um texto com vírgula e apelido entre aspas recebe um par externo de aspas, enquanto cada aspa original é duplicada. Textos sem caracteres estruturais são devolvidos como estão, evitando alterações desnecessárias e mantendo a validade CSV. O comportamento cobre tanto quebras de linha Unix quanto retornos de carro usados por outros sistemas. O foco deliberado é o CSV separado por vírgulas, não delimitadores configuráveis; se seu fluxo produz dados separados por tabulações ou ponto e vírgula, escolha as regras adequadas a esse formato. A saída é um campo, e não uma linha, cabeçalho ou arquivo completo.
Use o valor escapado em exportações e pipelines
Insira o texto devolvido diretamente entre as vírgulas emitidas pelo gerador de linhas, sem acrescentar outra camada de aspas. Aplicar a operação separadamente a cada valor de origem é uma forma direta de gerar linhas a partir de formulários, resultados de bancos de dados, logs ou relatórios. Como o algoritmo é determinístico e não depende de rede, a mesma entrada sempre produz o mesmo campo escapado no navegador e pela API. Isso facilita testes com dados fixos e o uso em builds reproduzíveis. Evite processar novamente um campo já escapado, a menos que a representação escapada tenha se tornado o novo valor literal: o escape CSV depende do contexto, então uma segunda passagem tratará corretamente a primeira sintaxe como conteúdo e adicionará outra camada. Lembre-se também de que esta capacidade trata da sintaxe do campo, não da segurança de fórmulas em planilhas. Se um texto não confiável iniciado por sinal de igual for aberto em uma planilha, avalie separadamente os controles contra injeção de fórmulas conforme a política do aplicativo de destino. Por fim, una os campos escapados com vírgulas e encerre os registros com o final de linha exigido pelo sistema receptor.
Casos de uso
Crie uma exportação CSV segura
Escape cada valor do banco de dados ou aplicativo antes de unir os campos resultantes em um registro separado por vírgulas.
Preserve endereços com várias linhas
Mantenha quebras de linha dentro de um único campo de endereço sem criar registros CSV adicionais por acidente.
Proteja nomes e descrições
Represente vírgulas e aspas em nomes de produtos, observações e descrições sem deslocar as colunas seguintes.
Perguntas frequentes
Quanto custa uma solicitação?
Uma solicitação pela API custa US$ 0,002. A mesma transformação determinística também está disponível gratuitamente no navegador.
Todos os valores recebem aspas?
Não. O resultado recebe aspas quando o texto contém vírgula, retorno de carro, quebra de linha ou aspas duplas; caso contrário, permanece inalterado.
Como as aspas são escapadas?
Cada aspa dupla dentro de um campo entre aspas se torna duas aspas consecutivas, e um par de aspas duplas envolve o campo inteiro.
A ferramenta cria uma linha CSV completa?
Não. Ela devolve um único campo escapado. Escape cada valor separadamente, una os resultados com vírgulas e acrescente o final de registro apropriado.
Valores com várias linhas são aceitos?
Sim. Textos com retornos de carro ou quebras de linha recebem aspas para que essas quebras permaneçam no mesmo campo.
Isso impede injeção de fórmulas em planilhas?
Não. O recurso implementa apenas a sintaxe de campos CSV. A mitigação de injeção de fórmulas depende do destino e deve ser aplicada como política separada.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/str/escape-csv-field \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Quarterly report, \"final\""}'const res = await fetch("https://api.kit.forhosting.com/str/escape-csv-field", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Quarterly report, \"final\""
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/escape-csv-field",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Quarterly report, \"final\""
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/escape-csv-field", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Quarterly report, \\"final\\""}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Quarterly report, \"final\""}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/escape-csv-field", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "Quarterly report, \"final\""
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.escape_csv_field",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |