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.
| Estilo | Entrada útil | Limite da implementação |
|---|---|---|
| Componente de URL | Um valor de consulta ou segmento de caminho | Escapa pontuação reservada; acrescenta escapes rigorosos para cinco marcas |
| Valor de formulário | Um único valor codificado para formulário | Codificação URLSearchParams; decodificação substitui o + literal antes da decodificação percentual rigorosa |
| URL inteira | Um endereço já montado | encodeURI/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.
| Texto de entrada | Saída de componente | Saída de valor de formulário | Saída de URL inteira |
|---|---|---|---|
a b+c | a%20b%2Bc | a+b%2Bc | a%20b+c |
café | caf%C3%A9 | caf%C3%A9 | caf%C3%A9 |
a/b?x=1#part | a%2Fb%3Fx%3D1%23part | a%2Fb%3Fx%3D1%23part | a/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.
| Entrada ou sintoma | Motivo | Próxima verificação útil |
|---|---|---|
% ou %2 | Escape percentual incompleto | Confira o valor completo copiado |
%GG | Dígitos de escape não hexadecimais | Inspecione a origem do valor |
%FF | O byte escapado não é UTF-8 válido | Identifique a codificação esperada ou o escopo binário |
a+b mantém o mais no modo de componente | Mais literal não é espaço nesse modo | Use o modo de formulário somente se o receptor esperar |
Decodificação inteira mantém %2F | decodeURI preserva esse separador reservado | Use 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
- RFC 3986: sintaxe URI, caracteres não reservados e codificação percentual
- ECMAScript: encodeURIComponent e decodeURIComponent
- ECMAScript: encodeURI e decodeURI
- ECMAScript: isWellFormed de String
- WHATWG URL: análise e serialização de formulários codificados para URL
- WHATWG URL: análise de URL, hosts e URLSearchParams
- WHATWG Encoding: UTF-8 e decodificação de texto
- API File do W3C: leitura de Blob como texto