Código

Guia do codificador e decodificador de URL: codificação percentual, espaços e UTF-8

ToolMellow ·

A codificação de URL representa certos bytes com escapes percentuais para que o texto se ajuste à parte pretendida de uma URL ou a um valor de formulário. O ToolMellow oferece três estilos: Componente de URL, Valor de formulário e URL inteira. Cole o texto, escolha o estilo e pressione Codificar ou Decodificar. A conversão é local: não abre o endereço, não o busca na rede e não o valida.

O resultado correto depende de onde o texto será usado. Um valor de consulta, uma string de consulta completa e uma URL já montada são entradas diferentes. Este guia mostra exemplos exatos, explica UTF-8 e erros comuns e ajuda a evitar alterações nos separadores ou a decodificação de mais camadas do que o necessário. Os endereços e resultados de exemplo são ilustrações, não recursos buscados.

Codificador e decodificador de URL

Como codificar ou decodificar texto de URL

Abra o codificador e decodificador de URL e cole o valor completo que deseja transformar. Em Estilo de codificação, selecione Componente de URL (%20 para espaços), Valor de formulário (+ para espaços) ou URL inteira (preservar separadores). Codificar e Decodificar atuam sobre toda a entrada do editor; apenas digitar não a converte.

Leia a saída antes de usar Copiar resultado ou Baixar. Usar resultado como entrada permite aplicar outra operação quando o resultado respeita o limite de entrada. Alterar a entrada ou o estilo de codificação limpa o resultado anterior. Quebrar linhas altera apenas a disposição visual; não insere quebras de linha nem modifica os escapes percentuais.

  • Para um único valor de consulta ou segmento de caminho, escolha o modo de componente em vez de codificar uma consulta inteira já montada.
  • Use o modo de valor de formulário somente quando o formato de destino esperar as regras de valores de application/x-www-form-urlencoded.
  • Para um endereço já montado cujos separadores devem manter o significado, considere o modo de URL inteira; ele ainda não é um analisador nem um validador de URLs.

Escolha um componente, um valor de formulário ou uma URL inteira

Codificar um componente impede que a pontuação reservada de um valor funcione como estrutura da URL. O modo de valor de formulário usa as regras de codificação de formulários para um único valor e não retorna o nome do parâmetro. O modo de URL inteira preserva separadores como dois-pontos, barra, ponto de interrogação, ampersand, sinal de igual e marcador de fragmento no texto.

Escolha o estilo conforme a aplicação de destino, não conforme a saída que parece mais curta. Codificar uma consulta inteira como um único valor ou deixar separadores expostos dentro de um valor pode mudar o significado. Esta ferramenta não divide uma consulta colada em pares de nome e valor nem decide qual parte pertence ao host, caminho, consulta ou fragmento.

Escolha um componente, um valor de formulário ou uma URL inteira
EstiloEntrada útilLimite da implementação
Componente de URLUm valor de consulta ou segmento de caminhoEscapa pontuação reservada; acrescenta escapes rigorosos para cinco marcas
Valor de formulárioUm único valor codificado para formulárioCodificação URLSearchParams; decodificação substitui o + literal antes da decodificação percentual rigorosa
URL inteiraUm endereço já montadoencodeURI/decodeURI; seu próprio conjunto reservado, não validação completa de URL

RFC 3986: sintaxe URI, caracteres não reservados e codificação percentualWHATWG URL: análise e serialização de formulários codificados para URLECMAScript: encodeURI e decodeURI

O que a codificação percentual faz com os bytes

Um escape percentual é um sinal de porcentagem seguido de dois dígitos hexadecimais que representam um byte. Caracteres Unicode podem precisar de vários bytes UTF-8, portanto um caractere visível pode exigir vários escapes. O espaço ASCII é 20 em hexadecimal e aparece como %20 ao codificar componentes e URLs inteiras; a codificação de formulário representa esse espaço como +.

Estes exemplos fixos mostram por que o estilo importa. Um sinal de mais literal e um espaço codificado são valores diferentes. A barra e a pontuação de consulta na terceira linha pertencem a um componente em um caso e permanecem caracteres estruturais no modo de URL inteira. Nenhuma das duas ações faz uma requisição ao endereço.

O que a codificação percentual faz com os bytes
Texto de entradaSaída de componenteSaída de valor de formulárioSaída de URL inteira
a b+ca%20b%2Bca+b%2Bca%20b+c
cafécaf%C3%A9caf%C3%A9caf%C3%A9
a/b?x=1#parta%2Fb%3Fx%3D1%23parta%2Fb%3Fx%3D1%23parta/b?x=1#part
~*~%2A%7E*~*
😀%F0%9F%98%80%F0%9F%98%80%F0%9F%98%80

RFC 3986: sintaxe URI, caracteres não reservados e codificação percentualWHATWG Encoding: UTF-8 e decodificação de textoWHATWG URL: análise e serialização de formulários codificados para URLECMAScript: encodeURI e decodeURI

Modo de componente e escapes rigorosos

A codificação de componentes do ToolMellow usa encodeURIComponent e também escapa !, o apóstrofo, (, ) e *. Seu conjunto ASCII mantido literalmente é formado por letras, dígitos e -._~. Isso se aproxima mais do conjunto não reservado da RFC 3986 do que encodeURIComponent sem modificações, que mantém essas cinco marcas adicionais inalteradas.

Por exemplo, o valor red&blue=1 se torna red%26blue%3D1. Ele pode ser fornecido como valor de um parâmetro sem que seu ampersand se torne outro separador de consulta. A decodificação de componentes usa decodeURIComponent: caracteres reservados com escapes percentuais são decodificados, enquanto um + literal continua sendo um mais. Ela não analisa pares de consulta nem normaliza uma URL completa.

RFC 3986: sintaxe URI, caracteres não reservados e codificação percentualECMAScript: encodeURIComponent e decodeURIComponent

Valores de formulário: mais, espaços, til e asterisco

A codificação de valores de formulário segue a serialização de URLSearchParams para um único valor. Um espaço se torna +, um mais literal se torna %2B e um asterisco literal é mantido. O til se torna %7E. Essas diferenças são esperadas: a codificação de formulário tem seu próprio conjunto permitido, diferente do conjunto do modo de componente.

A decodificação primeiro substitui sinais de mais literais por espaços e depois chama decodeURIComponent, que é rigoroso. Assim, a+b%2Bc se torna a b+c: %2B vira um mais depois da substituição inicial e não é convertido em um segundo espaço. É um decodificador de valores, não o analisador permissivo de consultas de URLSearchParams. Escapes malformados e UTF-8 inválido codificado com porcentagens causam erros em vez de serem reparados.

WHATWG URL: análise e serialização de formulários codificados para URLECMAScript: encodeURIComponent e decodeURIComponent

O modo de URL inteira preserva seu próprio conjunto de separadores

A codificação de URL inteira usa encodeURI. Ela preserva separadores de um endereço montado enquanto escapa espaços e os outros caracteres necessários. Por exemplo, https://example.com/a b?q=a+b#part se torna https://example.com/a%20b?q=a+b#part. O mais permanece um mais nessa etapa; como a aplicação analisa a consulta depois é uma etapa separada.

A decodificação de URL inteira usa decodeURI, que preserva escapes de seu próprio conjunto reservado ;/?:@&=+$,#. Por exemplo, %2F, %26 e %23 permanecem escapados, enquanto %20 se torna um espaço. Esse conjunto mais antigo não inclui todos os caracteres reservados da RFC 3986: %5B e %5D viram colchetes, e a codificação de URL inteira escapa os colchetes literais. Esse modo não analisa uma URL, não valida host ou esquema, não normaliza um host IPv6, não converte domínios via IDNA e não busca o endereço.

ECMAScript: encodeURI e decodeURIWHATWG URL: análise de URL, hosts e URLSearchParamsRFC 3986: sintaxe URI, caracteres não reservados e codificação percentual

UTF-8, Unicode e a diferença da entrada bruta

A codificação usa escapes percentuais para os bytes UTF-8 dos caracteres que precisam de escape. Em café, a última letra exige dois bytes UTF-8 representados por %C3%A9; o emoji 😀 usa quatro bytes. O limite do editor conta unidades de código UTF-16 de JavaScript, portanto comprimento em bytes, unidades de código e caracteres visíveis podem ser diferentes. A conversão não normaliza texto Unicode.

Todos os estilos de codificação rejeitam um substituto Unicode sem par. A decodificação de URL inteira também verifica primeiro se a entrada bruta é Unicode bem formado. A decodificação de componentes e formulários não faz essa verificação separada da string bruta: unidades de código literais sem escape podem passar sem alteração, enquanto as sequências de bytes com escapes percentuais precisam ser UTF-8 válido. Não interprete uma decodificação bem-sucedida como validação geral de cada caractere literal ou como garantia de uma URL segura.

ECMAScript: encodeURIComponent e decodeURIComponentECMAScript: encodeURI e decodeURIECMAScript: isWellFormed de StringWHATWG Encoding: UTF-8 e decodificação de texto

Escapes malformados, UTF-8 inválido e saídas inesperadas

Um escape precisa de exatamente dois dígitos hexadecimais depois de cada sinal de porcentagem, e as sequências de bytes escapados devem satisfazer as regras UTF-8 do decodificador. Um sinal de porcentagem literal que você deseja codificar vira %25; um sinal isolado na entrada de decodificação é um erro. A ferramenta não remove silenciosamente espaços em branco nem decodifica repetidamente até que o texto pareça legível.

Confira o estilo e o valor original completo antes de mudar caracteres. Espaços e quebras de linha sem escape continuam sendo dados de entrada e podem mudar uma codificação. Se você copiou um atributo HTML, uma string JSON entre aspas ou um corpo de requisição completo, analise esse formato externo separadamente. Seus delimitadores e regras de escape não se tornam automaticamente regras de codificação percentual.

Escapes malformados, UTF-8 inválido e saídas inesperadas
Entrada ou sintomaMotivoPróxima verificação útil
% ou %2Escape percentual incompletoConfira o valor completo copiado
%GGDígitos de escape não hexadecimaisInspecione a origem do valor
%FFO byte escapado não é UTF-8 válidoIdentifique a codificação esperada ou o escopo binário
a+b mantém o mais no modo de componenteMais literal não é espaço nesse modoUse o modo de formulário somente se o receptor esperar
Decodificação inteira mantém %2FdecodeURI preserva esse separador reservadoUse a decodificação de componente para o valor individual adequado

ECMAScript: encodeURIComponent e decodeURIComponentECMAScript: encodeURI e decodeURIRFC 3986: sintaxe URI, caracteres não reservados e codificação percentual

Por que %25 aparece e quando uma segunda decodificação é errada

Codificar um sinal de porcentagem já codificado produz outra camada: codificar %2F no modo de componente gera %252F. Uma única decodificação de componente de %252F retorna %2F; a segunda retorna /. Cada etapa transforma uma camada de codificação. O %25 sozinho não prova um erro, pois a aplicação pode transportar intencionalmente texto codificado dentro de outro valor.

Identifique a camada que sua aplicação espera em vez de decodificar repetidamente até aparecer pontuação. Uma segunda decodificação de componente pode transformar dados em uma barra ou separador estrutural. A decodificação de URL inteira pode manter intencionalmente esses separadores escapados, portanto o exemplo de componente não implica que todos os modos removam todos os escapes ao repetir a operação. A ferramenta não conhece as regras de roteamento ou autorização da aplicação.

RFC 3986: sintaxe URI, caracteres não reservados e codificação percentualECMAScript: encodeURIComponent e decodeURIComponentECMAScript: encodeURI e decodeURI

Strings de consulta, segmentos de caminho e uso seguro na aplicação

Para um parâmetro de consulta, separe o nome do parâmetro e a estrutura da consulta do seu valor. Uma API para construir URLs, como URL e URLSearchParams, pode ajudar a montar e serializar um endereço real. Esta ferramenta transforma somente o texto fornecido; não valida um hostname, não encurta links, não segue redirecionamentos e não decide quais esquemas sua aplicação deve permitir.

A codificação percentual é uma representação reversível, não criptografia, hashing, escape HTML ou autorização. Codificar um esquema perigoso não torna um link confiável, e decodificar um valor não o torna seguro para inserir como HTML ou código executável. Aplique as regras de validação e escape do contexto de destino e mantenha segredos reais fora das URLs de exemplo compartilhadas.

WHATWG URL: análise de URL, hosts e URLSearchParamsWHATWG URL: análise e serialização de formulários codificados para URLRFC 3986: sintaxe URI, caracteres não reservados e codificação percentual

Limites de entrada, crescimento da saída e arquivos de texto locais

O teto da entrada é 1,000,000 unidades de código UTF-16, não um milhão de bytes UTF-8 ou grafemas exibidos. Escapes podem aumentar a saída: um milhão de espaços ASCII produzem três milhões de caracteres no modo de componente. Copiar e Baixar continuam disponíveis para saídas que excedem o limite de entrada, mas Usar resultado como entrada não pode carregar esse resultado grande demais. A memória disponível no navegador continua sendo um limite prático.

Abrir um arquivo local usa File.text() para ler texto UTF-8. Arquivos com 4,000,000 bytes ou mais são rejeitados; texto lido com mais de 1,000,000 unidades UTF-16 também é rejeitado. A leitura comum remove um BOM UTF-8 inicial e substitui sequências UTF-8 malformadas, portanto não é codificação binária que preserve cada byte nem decodificação em qualquer conjunto de caracteres. A extensão de um arquivo não comprova sua codificação.

API File do W3C: leitura de Blob como textoWHATWG Encoding: UTF-8 e decodificação de textoECMAScript: isWellFormed de String

Copiar, baixar texto, limpar e privacidade

Baixar salva o resultado como texto UTF-8 em toolmellow-result.txt, não como requisição, relatório ou página aberta. Uma conversão vazia bem-sucedida também habilita Copiar resultado e Baixar. Se o acesso à área de transferência estiver indisponível, selecione a saída e copie manualmente. Para uma verificação simples, codifique texto conhecido, reutilize o resultado quando ele couber e decodifique usando o mesmo estilo.

Limpar redefine entrada, resultado, erros, conteúdo de busca/substituição e histórico do editor, mantendo Estilo de codificação e Quebrar linhas. O conteúdo de trabalho fica na memória da página, não no histórico de uma conta. Atualizar ou fechar o espaço de trabalho descarta esse estado; arquivos baixados permanecem no dispositivo. Limpar não garante apagamento forense da memória do navegador ou do sistema operacional.

A conversão é executada em um worker local do navegador e não envia texto de URL digitado, conteúdo dos arquivos selecionados ou resultados a um servidor de conversão. Carregar o site ainda envia metadados comuns de requisições à hospedagem e usa Google Analytics para visitas, incluindo cookies e informações do navegador/dispositivo. Conversão local não significa anonimato, tráfego zero ou ausência de registros da infraestrutura; consulte a página de privacidade do site.

Incorpore o codificador e decodificador de URL com seu backlink

Escolha o idioma da página e abra a seção de integração abaixo do espaço de trabalho. Copie ou baixe o trecho HTML fornecido em uma área do site que permita iframes e scripts externos. Ele contém o iframe do ToolMellow, o script de ajuste de tamanho e um backlink visível para a página da ferramenta no idioma correspondente. Mantenha esse link de atribuição.

Pré-visualize a incorporação em uma tela estreita e confirme as permissões da área de transferência e o suporte a recursos externos na plataforma. A incorporação mantém os mesmos três estilos, escopo de texto e limites; não é uma API de conversão no servidor nem um serviço que busca URLs. O link fornecido usa nofollow e noopener, portanto sua presença não garante melhores posições na busca.

Perguntas frequentes

Como codificar texto para uma URL?

Escolha o estilo para o destino: Componente de URL para um valor individual ou segmento de caminho, Valor de formulário para serialização de formulário ou URL inteira para um endereço montado cujos separadores devem permanecer. Cole o texto e pressione Codificar. A ferramenta não abre o endereço.

Como decodificar um valor codificado para URL?

Escolha o estilo correspondente e pressione Decodificar. Os modos de componente e formulário decodificam rigorosamente UTF-8 com escapes percentuais; o formulário também transforma o mais literal em espaço primeiro. O modo de URL inteira mantém os escapes de seu próprio conjunto reservado. Não analisa a consulta como pares.

Quando o sinal de mais significa espaço em uma URL?

Nesta ferramenta, somente a decodificação de Valor de formulário substitui o mais literal por espaço. Componente de URL e URL inteira preservam o mais literal ao decodificar. A análise de application/x-www-form-urlencoded tem sua própria regra para o mais; ela não vale para todos os componentes de URL.

Qual é a diferença entre %20 e +?

%20 é o escape percentual do byte de espaço ASCII. A serialização de formulário usa mais para espaço e %2B para mais literal. O formato de destino determina se o mais deve ser interpretado como espaço.

Por que a decodificação de URL inteira mantém %2F?

Esse modo usa decodeURI e preserva escapes de seu conjunto ;/?:@&=+$,#, incluindo barra, ampersand e marcador de fragmento. Isso não abrange todos os caracteres reservados da RFC 3986: escapes de colchetes viram colchetes. O modo de componente também decodifica os escapes desses separadores. Escolha conforme a parte pretendida do endereço e não use o modo inteiro como normalizador de hosts IPv6.

Como isso difere de encodeURIComponent?

O modo de componente do ToolMellow também escapa exclamação, apóstrofo, parênteses e asterisco. Somente letras, dígitos e -._~ permanecem literais. Os modos de formulário e URL inteira usam outras regras de serialização; não são nomes intercambiáveis.

Por que a decodificação de URL falha?

Escapes incompletos ou não hexadecimais e UTF-8 inválido codificado com porcentagens causam erro. Confira o valor original, o estilo esperado e o formato externo. A ferramenta não repara escapes malformados nem escolhe silenciosamente outra codificação de caracteres.

A ferramenta sempre valida Unicode ao decodificar?

Não. A decodificação de URL inteira verifica se a entrada bruta é Unicode bem formado; a decodificação de componentes/formulários não verifica separadamente as unidades de código literais sem escape. As sequências de bytes com escapes percentuais são decodificadas rigorosamente como UTF-8. Uma decodificação bem-sucedida não é validação completa de URL.

Por que minha URL contém %25?

%25 representa um sinal de porcentagem. Pode aparecer quando texto codificado é codificado de novo, como %2F virar %252F no modo de componente. Determine a camada esperada; decodificar repetidamente pode transformar dados em pontuação estrutural.

Posso colar uma consulta inteira em Valor de formulário?

A ferramenta a trata como um único valor, não como uma sequência de pares de parâmetros. A codificação escapa separadores dentro desse valor; a decodificação não extrai nomes e valores. Use um analisador de URL/consulta adequado para lidar com toda a estrutura.

Posso codificar um arquivo local ou reutilizar uma saída grande?

O controle de arquivos lê texto UTF-8 de um arquivo menor que 4,000,000 bytes e permite até 1,000,000 unidades UTF-16 de entrada. Não é codificação de arquivo binário bruto. A saída pode ser maior e ainda copiada/baixada, mas não pode ser reutilizada como entrada se ultrapassar o limite.

Codificação de URL é criptografia?

Não. A codificação percentual é uma representação reversível e não acrescenta sigilo nem autorização. Também não é hashing, escape HTML ou garantia de uma URL segura. Aplique as regras de validação e escape do contexto de destino.

Posso incorporar o codificador e decodificador de URL ao meu site?

Use o trecho HTML localizado abaixo do espaço de trabalho, mantenha o backlink visível para o ToolMellow e confirme o suporte a iframe/scripts. A incorporação usa os mesmos três estilos e limites locais de texto; não é uma API de conversão no servidor nem um serviço que busca URLs.

Fontes e leituras complementares

Coloque em prática.