ForHosting KIT · Ferramentas para dev

Codificador porcentagem RFC 3986

Pela regra estrita da RFC 3986, hello world!'()* vira hello%20world%21%27%28%29%2A: só letras, dígitos, hífen, ponto, sublinhado e til ficam como estão. Na decodificação, uma sequência de porcentagem incompleta interrompe o processo em vez de gerar caracteres inventados. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Texto
hello world!'()*
Modo de cálculo
Encode
Você obtém
Resultado
hello%20world%21%27%28%29%2A
Comprimento
28
Forma padrão
RFC 3986
Não reservados
A-Z a-z 0-9 - . _ ~

RFC 3986 define a gramática moderna de URI e o conjunto exato de caracteres não reservados que podem aparecer sem codificação percentual: letras, dígitos, hífen, ponto, sublinhado e til. Esta capacidade aplica o mapa estrito de RFC 3986 nos dois sentidos: encode transforma cada byte UTF-8 não não-reservado em %HH maiúsculo, e decode restaura o texto simples falhando de imediato em sequências percentuais incompletas ou não hexadecimais.

Como a codificação RFC 3986 difere de encodeURIComponent

A codificação percentual substitui octetos não permitidos por um sinal de porcentagem e dois dígitos hexadecimais para que uma string viaje com segurança dentro de um componente URI. A seção 2.3 de RFC 3986 nomeia o conjunto não reservado—ALPHA, DIGIT, hífen, ponto, sublinhado e til—e afirma que esses caracteres não devem ser codificados em porcentagem ao produzir dados.

Qualquer outro octeto, incluindo gen-delims e sub-delims reservados e todos os bytes UTF-8 não ASCII, deve ser codificado quando o valor for tratado como dado opaco. encodeURIComponent do JavaScript usa um conjunto sem escape mais frouxo que também mantém como literais exclamação, apóstrofo, parênteses de abertura e fechamento e asterisco.

Essa escolha combina com o comportamento histórico de formulários do navegador, mas diverge da codificação estrita de componentes de RFC 3986 e de muitas bibliotecas de servidor em Python, Go, Java ou Rust que só deixam sozinhas as seis marcas não reservadas. O modo de falha prático é sutil: uma assinatura ou chave de cache construída a partir de «hello! world» pode gerar hash diferente se um lado emitir hello!

world e o outro hello%21world. Esta ferramenta sempre aplica o mapa RFC no encode, com hex maiúsculo (preferência de maiúsculas), de modo que caracteres multibyte como café viram caf%C3%A9 e um espaço vira %20, enquanto ! ' ( ) * viram %21 %27 %28 %29 %2A.

O decode aceita dígitos hex maiúsculos ou minúsculos, valida que cada porcentagem seja seguida de exatamente dois dígitos hex e reconstrói texto UTF-8.

O que você envia e o que recebe de volta

Envie um campo de string obrigatório chamado text e um campo mode opcional. O modo encode escapa o texto em porcentagem sob a regra não reservada de RFC 3986 e devolve a string transformada em result. O modo decode valida cada sequência percentual, inverte a codificação e devolve texto UTF-8 simples em result.

Falhas de validação não consomem saldo pré-pago. Verificações clássicas incluem codificar uma frase com espaços e exclamações para ver %20 e %21 lado a lado, decodificar caf%C3%A9%21 de volta a café!, e rejeitar uma string que termina com porcentagem solto ou contém %ZZ.

Onde a codificação estrita RFC 3986 aparece no trabalho real

Serviços de backend que montam URLs de redirecionamento assinadas, strings de parâmetros OAuth 1.0 ou requisições canônicas HMAC costumam exigir codificação percentual compatível com RFC 3986 e não com encodeURIComponent do navegador, porque as strings base de assinatura tratam ! ' ( ) * como caracteres que devem ser escapados.

Clientes móveis e desktop fora do ecossistema JavaScript tipicamente embarcam bibliotecas que já seguem a regra só não reservados; um middleware Node que usasse encodeURIComponent para os mesmos valores produziria falhas de assinatura intermitentes só quando um título de produto ou nome de exibição contivesse apóstrofo ou parêntese. Engenheiros de suporte colam strings meio codificadas de tickets e logs e precisam de um caminho de decode que falhe alto em escapes truncados em vez de inventar caracteres.

Autores de currículo de fundamentos web querem uma página dedicada à codificação percentual RFC 3986 com o conjunto não reservado explícito, em vez de enterrar o tema sob um codificador URL genérico ou ferramenta Base64, porque a intenção de busca e a diferença !'() * é o que alunos e integradores procuram. Engenheiros de localização verificam que idiomas multibyte façam ida e volta sem mojibake.

Se você precisar de semântica encodeURIComponent, codificação leve de URI completa que preserve delimitadores estruturais, Base64 ou geração de slugs, trate-os como intenções de busca e landings separadas em vez de sobrecarregar esta página do codificador RFC 3986.

OAuth e strings de consulta assinadas

Codifique em porcentagem os valores de parâmetro com o conjunto estrito não reservado de RFC 3986 para que as strings base HMAC e OAuth coincidam com pares não JavaScript que escapam ! ' ( ) *.

Decodificar fragmentos URI de logs ou colados

Decodifique fragmentos codificados em porcentagem de logs e tickets para UTF-8 legível, com falhas rígidas em sequências percentuais incompletas ou não hexadecimais.

Qual a diferença em relação a encodeURIComponent?

encodeURIComponent deixa ! ' ( ) * sem escape. Esta ferramenta segue apenas os caracteres não reservados de RFC 3986 (A–Z a–z 0–9 - . _ ~) e codifica em porcentagem esses quatro sub-delims como %21 %27 %28 %29 %2A.

Posso codificar e decodificar?

Sim. Defina mode como encode (padrão) para escapar em porcentagem texto simples sob as regras RFC 3986, ou mode como decode para recuperar texto UTF-8 de uma string codificada em porcentagem.

Os dígitos hex saem em maiúsculas ou minúsculas no encode?

O encode emite dígitos hexadecimais em maiúsculas (%2A e não %2a), forma preferida em RFC 3986. O decode aceita hex maiúsculo e minúsculo.

Quanto custa o codificador de porcentagem RFC 3986?

A ferramenta do navegador é gratuita e roda localmente.

Como fica a palavra café codificada com porcentagem?

Fica caf%C3%A9. O é ocupa dois bytes em UTF-8, e cada um vira um sinal de porcentagem seguido de dois dígitos hexadecimais em maiúsculas. Ao decodificar caf%C3%A9, você recebe café de volta, sem caracteres trocados.

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.

POSThttps://api.kit.forhosting.com/enc/url-rfc3986

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/enc/url-rfc3986 \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"hello world!'\''()"}'
{
  "text": "hello world!'()"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.url_rfc3986",
  "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.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Muitas ferramentas do dia a dia seguem encodeURIComponent do JavaScript, que deixa deliberadamente sem escape exclamações, apóstrofos, parênteses e asteriscos—caracteres que RFC 3986 classifica como sub-delims e que gateways rígidos, assinadores OAuth e clientes HTTP multi-idioma costumam esperar como %21 %27 %28 %29 %2A. Use quando o contrato disser «codificar em porcentagem conforme RFC 3986», quando precisar coincidir com um par não JavaScript que só mantém as seis marcas de pontuação não reservadas, ou quando quiser uma única ferramenta gratuita no navegador e uma API paga que concordem byte a byte na mesma função pura. O preço de chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item; falhas de validação não são cobradas.

Como a codificação RFC 3986 difere de encodeURIComponent

Um porcentagem final solto, uma sequência como %G1 ou UTF-8 inválido após expansão geram invalid_input com mensagem de posição em vez de lixo meio decodificado. O caminho é trabalho puro de strings, sem rede, sem sementes aleatórias e sem relógio de parede, de modo que entradas idênticas sempre produzem JSON idêntico. O preço API bem-sucedido é a base publicada de US$ 0,002 por item.

O que você envia e o que recebe de volta

Quando mode é omitido, encode é o padrão e um único payload ainda faz trabalho útil. A resposta ecoa mode e o text original, inclui result e o length de result, e rotula o contrato com standard em RFC 3986, um resumo curto de unreserved e also_escaped listando os quatro caracteres sub-delim que distinguem este mapa de encodeURIComponent. Falta de text, objetos não string, valores de mode não suportados, strings maiores que o máximo documentado, escapes percentuais incompletos, dígitos não hex após um porcentagem e erros de host em UTF-8 decodificado inválido falham com invalid_input e mensagem clara em inglês. O preço API bem-sucedido é a base publicada de US$ 0,002 por item, alinhada a outros codificadores de nível parse do catálogo.

Onde a codificação estrita RFC 3986 aparece no trabalho real

Como esta capacidade é um motor parse puro, o preço API é a base publicada de US$ 0,002 por item bem-sucedido e validação falha não consome saldo.

Fixtures golden multi-idioma

Gere vetores de encode e decode com os quais bibliotecas URL de Python, Go, Java e Rust concordem, incluindo os caracteres sub-delim que os navegadores costumam deixar literais.

O que acontece se uma sequência percentual estiver malformada?

O decode falha com invalid_input, indicando a posição e o escape inválido (por exemplo um % incompleto ou dígitos não hex). Nada é cobrado por falhas de validação.

Ver a documentação completa do KIT →