Command Palette

Search for a command to run...

Codificação de URL e decodificação online: o guia completo para codificação por cento sem quebrar seus links

Codificação de URL e decodificação online: o guia completo para codificação por cento sem quebrar seus links

T
Toolz Team
|Jul 11, 2026|27 min ler

Parte da coleção codificação

Codificador/decodificador de URL

Codifique e decodifique os URLs, strings de consulta e dados de formulário com os modos EncodeUriComponent, EncodeURI ou Form-Urlencoded

Usar Codificador/decodificador de URL

O bug que me ensinou a respeitar a codificação percentual foi um redirecionamento OAuth que falhou para exatamente um cliente WP Adminify tinha uma integração Google Fonts que autenticou através OAuth, e um usuário - um revendedor de hospedagem executando alguma configuração de proxy reverso EU ainda don' t totalmente entender - continuou recebendo redirect_uri_mismatch erros. Todos os outros estavam bem. Passei a maior parte de dois dias culpando a configuração do servidor. Então eu finalmente olhei para o URL real que seu navegador estava enviando, caractere por personagem, e aí estava: %2520 Onde deveria estar um espaço. Seu proxy estava codificando o redirect_uri. meu plugin foi também codificando-o O Google recebeu uma URL onde o espaço tinha sido codificado duas vezes - %20 tornou-se %2520- e rejeitou todo o aperto de mão Duas linhas de código fixaram-no Dois dias para o encontrar.

Esse foi o & #39; até mesmo meu primeiro desastre de codificação Anos antes I & #39; d construiu um link de campanha para um lançamento de plugin com um parâmetro UTM que continha um e comercial bruto - algo como utm_campaign=black&friday. O painel do Analytics mostrou uma campanha misteriosa chamada black e um parâmetro fantasma chamado friday Isso não combinava com nada. O e comercial dividiu silenciosamente meu parâmetro em dois. nenhum erro. nenhum aviso. Apenas dados errados e silenciosamente por onze dias antes de eu notar que os números não se somavam.

Aqui e #39; é o problema da codificação de URL: é um daqueles problemas que parece trivial até ser & #39; t. As regras vivem em uma especificação de 2005 (especulação de 2005)RFC 3986), a realidade do navegador vive em uma especificação diferente (o QUEWG Padrão de URL), JavaScript oferece três funções diferentes que fazem coisas ligeiramente diferentes, e PHP oferece mais duas. Erre e você não & #39; você tem uma falha - você obtém parâmetros truncados, fluxos de OAuth quebrados e links que funcionam no Chrome, mas morrem em um cliente de e-mail.

Então eu construí o codificador/decodificador que eu sempre quis Toolz.dev. Este guia aborda como usá-lo e - mais importante - como a codificação percentual realmente funciona, então o próximo %2520 Em seus registros leva dois minutos em vez de dois dias.

tl;dr: Para codificar ou decodificar o URL online, cole sua string no Toolz.dev url codificador/decodificador, escolha um modo e clique em codificar ou decodificar. Ele lida com UTF-8 e emoji corretamente, e o botão SWAP alimenta a saída de volta para a entrada para que você possa descascar valores codificados em duas partes (%2520) separados uma camada por vez. Tudo executa o lado do cliente, portanto, tokens e IDs de sessão em seus URLs nunca tocam em um servidor. codificar parâmetro valores Com o modo de componente; codifica apenas URLs completos quando você sabe por quê.

Principais características

Codifique e decodifique em uma ferramenta

Metade do tempo que preciso codificar um valor A outra metade I & #39; m olhando para uma URL retorcida de um arquivo de log e precisa decodificá-lo em algo legível A ferramenta faz ambos a partir de uma caixa de entrada - Codificar e Decodificar sentar-se um ao lado do outro como dois botões, então there' s no hunting for a separate page Cole uma string codificada e clique em Decodificar; digite um valor de consulta bruto e clique em Codificar. Também viagens de ida e volta de forma limpa: codificar, decodificar e você obter sua string original de volta, byte por byte Isso parece óbvio, mas I & #39; usei ferramentas on-line que manipularam mais sinais na viagem de ida porque eles poderiam & #39; t decidir qual especificação eles estavam seguindo Este é explícito sobre o que ele & #39; s fazendo em cada etapa, que é exatamente o que você quer quando você & #39; re depurar.

Componentes vs modos de codificação de url completo

Esta distinção é onde nasce a maioria dos bugs de codificação O modo componente codifica tudo o que é & #39; t sem reservas - incluindo /, ?, &, e =- que é o que você deseja para um único valor de parâmetro O modo Full-URL deixa os caracteres estruturais sozinhos para que a URL ainda funcione como uma URL, que é o que você deseja quando você & #39; está limpando um endereço completo. Usar o errado quebra sua estrutura de URL ou deixa caracteres perigosos não codificados. A ferramenta separa os dois modos com um clique em um único menu suspenso, rotulado com a função JavaScript a que cada um corresponde - encodeURIComponent, encodeURI, application/x-www-form-urlencoded. Eu fui e voltei com essa nomeação. Os rótulos de intenção (codificam um valor", "codificam um url inteiro") queriam ler melhor frio, mas os nomes das funções significam que o painel de referência está de fato no mapa um para um no código que você está prestes a escrever, e esse é o momento em que a maioria das pessoas está realmente. Se você já digitou encodeURI Quando você quis dizer encodeURIComponent- Eu tenho, mais de uma vez - o painel está lá para pegá-lo antes de você enviar.

Lida com UTF-8, emoji e caracteres internacionais

escrever à tipologia café e você consegue caf%C3%A9- o é Expandiu corretamente para seus dois bytes UTF-8. Digite um emoji e você terá quatro bytes codificados por cento. É aqui que as ferramentas mais antigas e o JavaScript obsoleto escape() Função desmoronar: eles assumem o latim-1 ou produzem não-padrão %uXXXX sequências que nenhum servidor pode analisar. Se você & #39; estão construindo URLs com conteúdo gerado pelo usuário - nomes, consultas de pesquisa, nomes de cidades em qualquer idioma que seja & #39; t Inglês - o tratamento correto do UTF-8 é & #39; t um bom texto bengali, lesmas árabes, termos de pesquisa chineses: todos eles codificam sequências percentuais RFC 3986 válidas que decodificam de forma idêntica na outra extremidade.

Um botão de troca para valores codificados em dois

o %2520 trap - um já codificado %20 ficar codificado novamente - me custou dois dias uma vez, então este é pessoal A decodificação é uma operação de camada única: %2520 decodifica para %20, não para um espaço, porque %25 é A codificação de %. Uma passagem dá uma camada. o botão de troca () move a saída de volta para a caixa de entrada para que a próxima passagem esteja a um clique de distância I & #39; desembalou URLs com três camadas de profundidade depois que eles passaram por um proxy, um serviço de redirecionamento e um link-wrapper de e-mail - swap, decodificar, trocar, decodificar, até que a string pare de mudar Esse & quot; pára de mudar" momento é o sinal real que você & #39; está procurando Seja honesto sobre o que é isso: it & #39; s um loop manual, não um detector A ferramenta faz sinalizador & #39; t %25XX para você, e eu vou e volto sobre se deveria - a decodificação automática até que estável seria conveniente até que destruísse silenciosamente um valor que continha legitimamente um sinal percentual.

Três modos, um painel de referência explícito

O seletor de modo carrega três opções - componente, URL completo e codificado por formulário - e o painel abaixo indica exatamente quais caracteres esse modo escapa, quais ele preserva e mostra um exemplo funcional. Adicionei-o porque nunca consegui lembrar se encodeURIComponent folhas ~ sozinho (aceita) ou se ! e * Sobrevivem (eles fazem, o que surpreende as pessoas, já que o RFC 3986 as classifica como sub-delimitações e não sem reservas). Em vez de memorizar três peculiaridades do JavaScript, você escolhe o modo por intenção e lê o que está prestes a fazer. Esse texto de referência é a parte que eu mais uso, e é o que eu gostaria se estivesse chegando à página fria à 1 da manhã.

100% do lado do cliente - nada sai do seu navegador

Pense no que & #39; s realmente dentro dos URLs que você decodifica: códigos de autorização OAuth, tokens de redefinição de senha, IDs de sessão, endereços de e-mail em links de cancelamento de assinatura, chaves de API alguma estrutura útil enfiada em uma string de consulta Cole-os em uma ferramenta do lado do servidor e eles pousam em logs de acesso de alguém & #39; s, vinculados ao seu IP, retidos por quem sabe por quanto tempo O codificador Toolz.dev é executado inteiramente em seu navegador - a conversão é algumas linhas de JavaScript executando localmente, e nenhuma solicitação é feita com seus dados Abra o DevTools e assista à guia de rede se você fizer & #39; para acreditar em mim Para qualquer coisa adjacente à segurança, o lado do cliente é & #39; t um recurso, it & #39; s a barra mínima.

Gratuito, sem inscrição, sem limites

Sem parede de conta, sem cota diária para uma ferramenta que faz a transformação de strings, não faz upgrade para Pro para decodificar mais de 1.000 caracteres." Eu construí o Toolz.dev porque estava cansado de sites de utilitários que interrompem uma tarefa de dez segundos com um pop-up de boletim de notícias. Marque-o, use-o cinquenta vezes por dia, pronto.

Como usar o codificador e o decodificador de URL

Passo 1: Abra a ferramenta e escolha sua direção

ir a Toolz.dev/tools/url-encoder E solte sua corda na caixa do lado esquerdo. Existem dois botões de ação, codificar e decodificar, e você escolhe um depois de colar em vez de definir uma direção primeiro. Se você está começando com algo legível (uma consulta de pesquisa, um URL de redirecionamento que você está prestes a incorporar), clique em Encode. Se você estiver começando com algo cheio de sinais percentuais (uma entrada de log, um cabeçalho de referência), pressione Decod. A saída cai no painel direito com um botão de cópia em seu cabeçalho e troco e desmarque sentados ao lado dos dois botões de ação.

Etapa 2: escolha o modo de componente, url completo ou formulário

codificação de um apreço isso ficará dentro de um parâmetro - um redirecionamento_uri, um termo de pesquisa, qualquer coisa depois de um = sinal? Use o modo de componente. ele codifica /, ?, &, e = Portanto, seu valor não pode quebrar o URL ao redor. codificação de um URL completo Isso só precisa de espaços e personagens não ASCII limpos? Use o modo de url completo, que preserva os caracteres estruturais. O terceiro modo, form-urlencoded, é uma codificação de componente com espaços escritos como + em vez de %20- escolha quando você' está construindo uma mão application/x-www-form-urlencoded Corpo. Observe que o modo também afeta a decodificação: no modo de formulário, + É convertido de volta para um espaço antes da decodificação; nos outros dois, ele permanece um PLUS LITERAL. Em caso de dúvida: modo componente para peças, modo de url completo para todo o conjunto.

Passo 3: leia a saída e observe os sinais de porcentagem restantes

A saída aparece no painel direito. Para decodificação, veja se o resultado ainda contém %XX sequências - se isso acontecer, o valor foi codificado mais de uma vez Hit Swap para mover essa saída de volta para a entrada, decodificar novamente, e repetir até que a string pára de mudar Se a entrada é malformada (um stray % Não seguido por dois dígitos hexadecimais, como um literal 100%), você receberá um erro explícito em vez de uma meia decodificação silenciosa, que é o comportamento que você deseja quando estiver depurando.

Etapa 4: copie e verifique

Aperte o botão copiar e cole o resultado onde ele pertence Para qualquer coisa importante - redirecionamentos OAuth especialmente - faça uma verificação de sanidade final: cole o valor codificado de volta no modo decodificar e confirme-o ida e volta para exatamente o que você começou Trinta segundos de verificação bate dois dias de redirect_uri_mismatch.

Porcentagem de codificação, RFC 3986 e por que os espaços se tornam %20 ou +

Os URLs podem conter apenas com segurança um conjunto limitado de caracteres. Todo o resto deve ser contrabandeado como bytes codificados por porcentagem. O livro de regras é RFC 3986 (2005), e divide os personagens em dois campos.

Personagens não reservados Nunca precisa de codificação: as letras A–Z e a–z, dígitos 0–9, e quatro símbolos - hífen -, período ., sublinhar _, e til ~. Codificar isso é legal, mas inútil.

Personagens reservados Tenha trabalhos estruturais dentro de um URL: : / ? # [ ] @ (os delimitadores gerais) e ! $ & ' ( ) * + , ; = (os subdelimitadores). O dois pontos separa o esquema do host. O ponto de interrogação inicia a string de consulta. O AmpersAnd separa os parâmetros. Se um personagem reservado precisa de codificação, depende inteiramente de onde aparece. um / No caminho é estrutura; um / Dentro de um valor de parâmetro REDIRECT_URI, estão os dados e devem %2F Ou o servidor irá analisar seu URL errado.

A mecânica: pegue o personagem, pegue seus bytes UTF-8 e escreva cada byte como % seguido por dois dígitos hexadecimais. Os caracteres ASCII são um byte - o espaço é %20, o e comercial é %26. Mas UTF-8 é uma codificação de vários bytes, então é são dois bytes: %C3%A9. Um emoji típico tem quatro bytes - codifica como %F0%9F%9A%80. É por isso que as ferramentas que assumem um caractere igual a um byte corrompem qualquer coisa fora do inglês simples.

Agora, o problema do espaço - a única coisa mais confusa na codificação de URL. Por RFC 3986, um espaço se torna %20. Mas os envios de formulários HTML usam uma serialização diferente, application/x-www-form-urlencoded, definido hoje no whatwg standard de url, e que O formato codifica espaços como +. Ambos estão corretos - em seus próprios contextos. O que significa + Em uma string de consulta é ambígua: pode ser um sinal literal plus (leitura RFC 3986) ou um espaço codificado (leitura de codificação de formulário). Se você já viu um número de telefone chegar como 1234 5678 Quando alguém enviou +1234..., você conheceu esse bug. Meu conselho: sempre emite %20 para espaços e %2B Para sinais literais mais. Ninguém os analisa mal.

JavaScript oferece três funções e elas não são intercambiáveis. Dada a string a=b&c d:

const s = "a=b&c d";

encodeURIComponent(s); // "a%3Db%26c%20d"  — encodes =, &, and space
encodeURI(s);          // "a=b&c%20d"      — leaves = and & alone
escape(s);             // "a%3Db%26c%20d"  — deprecated; breaks on Unicode

encodeURIComponent codifica tudo, exceto caracteres não reservados (mais !'()*- uma peculiaridade legada), tornando-a segura para valores de parâmetros. encodeURI preserva caracteres reservados para que um URL completo permaneça funcional - mas isso também significa isso não vai proteger um & dentro de seus dados. e escape() está obsoleto por um bom motivo: produz não padrão %uXXXX Sequências para caracteres não latinos-1. Nunca use em código novo.

O PHP espelha a mesma divisão com uma torção: urlencode() Produz codificação de estilo de formulário (os espaços se tornam +), enquanto rawurlencode() Segue o RFC 3986 (os espaços se tornam %20). Se você estiver criando URLs para qualquer coisa que não seja um corpo de postagem de formulário, rawurlencode() é o que você quer. Eu enviei o código WP Adminilly com o errado no início; WordPress add_query_arg() Me salvou mais vezes do que gostaria de admitir.

Finalmente, a armadilha de codificação dupla. %20 É um espaço codificado. codificar aquela corda Novamente e o % ela mesma se torna %25, dando a você %2520. decodificá-lo uma vez e você obtém %20 voltar - ainda codificado Isto acontece sempre que duas camadas de um sistema cada & quot; helpfully" codificam: o seu código mais um 'proxy', um serviço de redireccionamento mais um link-wrapper de e - mail A regra que o impede: codificar exactamente uma vez, no último momento possível antes do valor entrar no URL, e nunca codificar algo que você fez & #39; t apenas descodificar ou gerar raw.

Casos de uso comuns

Construindo strings de consulta com entrada do usuário

Sempre que o texto digitado pelo usuário entra em uma URL - caixas de pesquisa, filtros, valores de formulário passados via GET - ele deve ser codificado por componentes Um usuário que procura Q&A tips torna-se ?q=Q%26A%20tips; não codificado, o servidor vê uma busca por Q e um parâmetro misterioso A tips. Durante o desenvolvimento, eu uso o codificador de url Para gerar valores esperados antes de escrever o código, tenho uma referência correta conhecida para testar. Também é a maneira mais rápida de resolver o "Este personagem deve ser codificado"? Argumentos na revisão de código: cole-o no modo de componente e veja. APIs modernas como o JavaScript URLSearchParams lide com isso automaticamente e você deve usá-los - mas ainda precisa verificar Sua saída quando algo quebra, e isso é um trabalho de decodificação.

Links de marketing estão codificando campos minados. Valores UTM com espaços, pipes ou ampersands; links que passam por um encurtador de URL, depois um serviço de e-mail' s click tracker, depois um redirecionamento - cada camada uma chance de codificação ser adicionada ou mutilada Quando uma campanha aparece errada na análise, meu primeiro movimento é sempre o mesmo: cole o link completo no modo de decodificação e leia o que o servidor de análise realmente recebeu Nove vezes em cada dez o culpado é visível em segundos - um bruto & Dividindo um parâmetro, um + Isso deveria ser um plus literal, ou um %2520 Traindo codificação dupla. meu black&friday O incidente teria sido uma correção de onze segundos em vez de um buraco de dados de onze dias se eu tivesse feito isso no primeiro dia.

OAuth REDIRECT_URI e URLs de retorno de chamada

OAuth é onde os erros de codificação ficam caros, porque os provedores Correspondência de strings exa em URIs de redirecionamento O redirecionamento_uri é uma URL completa incorporada como um valor de parâmetro dentro de outra URL - portanto, deve ser codificado por componentes, exatamente uma vez. Subcodifique-o e o ? ou & Dentro dele, ele quebra o URL de autorização externa. Codifique duas vezes e o provedor compara https%3A%2F%2F... contra o seu registrado https://... e retorna redirect_uri_mismatch Com zero detalhes adicionais. Quando esse erro aparecer, decodifique o URL de autorização real da barra de endereço do seu navegador e compare o caractere por personagem do Redirect_URI com o valor registrado do seu aplicativo. Emparelhe-o com o decodificador jwt Para inspecionar os tokens que voltam, e você pode depurar todo o fluxo OAuth sem sair do navegador.

Decodificando URLs retorcidos de logs e cabeçalhos de referenciador

Os logs do servidor e os cabeçalhos dos referenciadores estão cheios de sopa codificada por cento: %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82 em um referenciador de pesquisa, caminhos codificados triplamente do tráfego de bots, cargas codificadas em solicitações suspeitas Decodificar isso é como você descobre o que realmente aconteceu - se aquele estranho 404 era um usuário com uma consulta cirílica ou um script sondando ../../etc/passwd Atrás de três camadas de codificação. Esta é exatamente a situação em que o ângulo de privacidade mais importa: os URLs de log rotineiramente contêm tokens de sessão e endereços de e-mail. Decodifique-os em uma ferramenta do lado do cliente, não em algum servidor aleatório que mantenha seus próprios logs. Eu escrevi mais sobre esse fluxo de trabalho no Guia de ferramentas de depuração de API.

Teste de API com curl

Seu shell e curl formam um segundo campo minado em cima da codificação de URL. & Antecedentes de um processo no Bash, ? desencadeia a expansão glob em zsh - por isso, um URL não - citado e não - codificado falha de forma confusa antes mesmo de chegar à rede O meu fluxo de trabalho: codificar cada valor de parâmetro na ferramenta, montar o URL, envolvê - lo entre aspas simples e, em seguida, executar curl Quando uma API devolve um 400 para um pedido que o & quot; olha para a direita, & quot; EU descodifico o URL exacto da saída verbosa (verbose output)curl -v) para ver o que realmente foi enviado - mais de uma vez o bug foi meu terminal, não minha API. curl's --data-urlencode O sinalizador manipula a codificação para os corpos de postagem, mas para obter strings de consulta, você está principalmente por conta própria e um codificador confiável é melhor do que adivinhar.

Artigos da Wikipedia em outros idiomas, links do Google Maps com nomes de lugares locais, URLs de documentos com lesmas bengalis ou árabes - copie um da sua barra de endereços e você poderá obter o bonito Unicode forma ou parede de %E0%A6%AC- bytes de estilo, dependendo do modo browser' s. Alguns aplicativos de bate-papo e clientes de e-mail truncam ou mutilam o formulário Unicode bruto A codificação da URL antes do compartilhamento produz uma string ASCII pura que sobrevive a cada mensageiro, lista de discussão e renderizador Markdown I & #39; tentou. Indo no sentido contrário, a decodificação transforma um link compartilhado ilegível de volta em algo que um ser humano pode verificar antes de clicar - vale a pena fazer antes de encaminhar qualquer coisa que chegou parecendo ruído de linha.

EncodeUriComponent vs Encodeuri vs Escape(): Qual você deve usar?

Três funções, uma default correta. Aqui está a comparação honesta:

encodeURIComponent() encodeURI() escape()
codifica tudo menos A-Z a-z 0-9 - . _ ~ ! ' ( ) * Tudo, exceto sem reservas + todos os caracteres reservados (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) tudo menos A-Z a-z 0-9 @ * _ + - . /
O espaço se torna %20 %20 %20
& e = codificado (%26, %3D) não codificado codificado
Manipulação de Unicode Corrigir bytes UTF-8 Corrigir bytes UTF-8 Quebrado - não padrão %uXXXX
usar para Valores de parâmetros, segmentos de caminho, qualquer coisa dentro de um URL Um URL completo que você não deseja reestruturar nada
estado Padrão, recomendado padrão, nicho desaprovado

Minha postura e eu vou morrer nesta colina: usar encodeURIComponent Para valores, quase sempre. O modelo mental é simples - se a corda estiver indo interior Um URL (um valor de consulta, um segmento de caminho, um REDIRECT_URI), é um componente e obtém encodeURIComponent. Os casos em que encodeURI É raro, é raro: você tem um URL completo e já estruturado contendo espaços ou caracteres não ASCII e deseja higienizá-lo sem tocar na estrutura. Isso talvez seja 5% das chamadas de codificação do mundo real. e escape() simplesmente nunca deve aparecer em código escrito depois de cerca de 2010 - sua saída Unicode é & #39; t codificação percentual válida, e cada linter moderno irá sinalizá-lo de qualquer maneira.

Mais uma nuance: encodeURIComponent folhas ! ' ( ) * não codificado por razões históricas, mesmo que a RFC 3986 os liste como sub-delimitadores reservados Para APIs OAuth e de análise estrita, algumas bibliotecas adicionam uma segunda passagem para codificar esses cinco também Se uma API exigente rejeitar seus valores, esse & #39; é um lugar para procurar - e o codificador de URL O modo de componente mostra exatamente quais personagens foram convertidos para que você possa comparar.

Perguntas frequentes

O que é codificação de url?

A codificação de URL (percent-encoding) é o mecanismo para representar caracteres em uma URL que, de outra forma, seria insegura ou estruturalmente significativa Cada caractere problemático é convertido em seus bytes UTF-8, e cada byte é escrito como um sinal de porcentagem seguido por dois dígitos hexadecimais - um espaço se torna% 20, um ampersand se torna% 26. as regras são definidas na RFC 3986. existe porque as URLs só permitem um conjunto de caracteres limitado, e caracteres como ? e & amp; têm trabalhos a fazer dentro da estrutura de URL.

Por que os espaços se transformam em %20 às vezes e + outras vezes?

Duas especificações diferentes A RFC 3986, que rege os próprios URLs, codifica um espaço como% 20. o formato application/x-www-form-urlencoded usado pelos envios de formulários HTML, definidos no WHATWG URL Standard, codifica um espaço como +. Ambos são válidos no seu próprio contexto, razão pela qual + numa cadeia de consulta é ambígua A prática segura: produzir sempre% 20 para espaços e% 2 B para sinais literais mais - cada analisador lida com os corretamente.

Qual é a diferença entre o EncodeUuri e o EncodeUriComponent?

o EncodeURIComponent codifica quase tudo, incluindo /, ?, & amp;, e =, tornando - o seguro para os valores individuais colocados dentro de um URL. o encodeURI preserva esses caracteres reservados para que um URL completo mantenha a sua estrutura Usar o encodeURIComponent para os valores dos parâmetros e segmentos de caminho - que é quase todo o caso do mundo real - e o encodeURI apenas quando estiver a higienizar um URL completo sem o reestruturar, Utilizando o encodeURI num valor que contenha o & amp; irá quebrar silenciosamente a sua cadeia de consulta.

Como faço para corrigir um URL de dois codificados?

A codificação dupla acontece quando uma cadeia já codificada é codificada de novo -% 20 torna - se% 2520 porque a própria% se transforma em% 25. para a corrigir, descodifique a cadeia repetidamente até não restarem sequências% XX e a saída parar de mudar Depois encontre qual a camada do seu sistema codificada duas vezes - normalmente o seu código mais um proxy, serviço de redireccionamento ou link-wrapper de e - mail - e remova um dos passos de codificação A regra: codifique exactamente uma vez, no último momento antes do valor entrar no URL.

É seguro decodificar URLs em uma ferramenta online?

Somente se a ferramenta executar o lado do cliente Os URLs contêm frequentemente códigos OAuth, tokens de redefinição de senha, IDs de sessão e endereços de e-mail Uma ferramenta do lado do servidor recebe tudo isso e pode mantê-lo em logs de acesso indefinidamente O codificador/decodificador de URL Toolz.dev executa toda a conversão em seu navegador com JavaScript - nenhum dado é transmitido em qualquer lugar, o que você pode verificar na guia de rede do seu navegador & #39; s. Para qualquer coisa que contenha credenciais ou tokens, o processamento do lado do cliente deve ser inegociável.

Preciso codificar o url inteiro ou apenas os parâmetros?

Apenas as partes de dados - valores de parâmetros individuais e, ocasionalmente, segmentos de caminho Os caracteres estruturais do próprio URL (o (o://após o esquema, o ? iniciando a consulta, o & amp; entre parâmetros) devem ficar não codificados ou o URL deixa de codificar cada valor separadamente com codificação de estilo de componente, então monte o URL em torno deles A codificação de um URL completo de ponta a ponta só é correta quando esse URL está se tornando um valor dentro de outro URL, como um redirecionamento OAuth_uri.

A codificação de URL pode lidar com emojis e caracteres não ingleses?

Sim - a codificação por cento moderna opera em bytes UTF-8, portanto, qualquer caractere Unicode funciona Um caractere de dois bytes como é torna-se% C3% A9, e um emoji de quatro bytes torna-se quatro por cento-sequências, como% F0% 9 F% 9 A% 80. só surgem problemas com ferramentas legadas ou JavaScript' s obsoleta escape () função, que assumem codificações de byte único e produzem saída inválida O codificador Toolz.dev lida com UTF-8 completo corretamente em ambas as direções.

Por que meu URL quebra quando um parâmetro contém um comercial?

Porque o & amp; é o delimitador entre parâmetros Se um valor contiver um ampersand bruto - digamos utm_campaign=black& sexta - o servidor analisa - o como um parâmetro nomeado utm_campaign com valor preto, mais um segundo parâmetro nomeado sexta - feira Nenhum erro é levantado; os seus dados estão apenas silenciosamente errados Codifique o ampersand como% 26 dentro do valor e o parâmetro chega intacto Este é um dos erros de URL mais comuns e menos visíveis.

O que significa %2f em um url?

O% 2 F é a barra de encaminhamento codificada por percentagens Você & #39; irá vê - lo quando um valor que por acaso contenha uma barra - um caminho de ficheiro, uma data como 07/07, ou um URL aninhado - estiver correctamente codificado antes de ser colocado num parâmetro de consulta ou segmento de caminho Esteja ciente de que alguns servidores e proxies (Apache, versões mais antigas do Tomcat, vários gateways de API) rejeitam ou descodificam silenciosamente o% 2 F no caminho por razões de segurança, por isso, se um pedido com uma barra codificada devolver um 404, a configuração do lado do servidor é normalmente a culpada, não a sua codificação.

Como faço para codificar url em python, php ou na linha de comando?

Python: urllib.parse.quote() para segmentos de caminho e quote_plus() para valores de consulta no estilo de formulário. php: rawurlencode() produz saída RFC 3986 com %20 para espaços, enquanto urlencode() produz saída no estilo de formulário com +. Linha de comando: jq -rr @uri ou curl's --data-urlencode flag. Cada uma delas corresponde ao comportamento do estilo de componente desta ferramenta, para que você possa prototipar a codificação aqui e verificar se seu código produz saída idêntica a byte.

Embrulhando

A codificação de URL é uma habilidade pequena com um retorno desproporcional. Uma vez que você pode ler %C3%A9 Como é e local %2520 como cheiro de codificação dupla, toda uma categoria de & quot; funciona na minha máquina & quot; bugs - fluxos de OAuth quebrados, campanhas de UTM fantasmas, APIs rejeitando solicitações de aparência perfeitamente razoável - passa de misterioso para mecânico As regras cabem em uma placa de índice: caracteres sem reservas passam, todo o resto se torna UTF-8 bytes como% HH, codificam valores não estruturam e codificam exatamente uma vez.

mantenha o Codificador/decodificador de URL marcado ao lado de seus irmãos - o conversor de base64 Para o outro esquema de codificação, você encontrará em todos os cabeçalhos de autenticação (escrevi um Guia de codificação de base64 sobre quando usar qual), o Encoder/decodificador de entidades HTML Para a terceira camada de codificação, esse conteúdo da Web adora empilhar no topo (o Guia de entidades HTML Abrange a versão de escape duplo da mesma armadilha que eu acertei %2520), e o formatador json Para qualquer que seja o URL decodificado, aponta.

E se você estiver montando um kit de depuração baseado em navegador mais amplo, o Guia de ferramentas de codificação caminha sobre como essas ferramentas se encaixam em um fluxo de trabalho real Tudo no Toolz.dev é executado no lado do cliente, não custa nada e faz um trabalho bem Isso & #39; s todo o pitch - o mesmo que EU gostaria que alguém tivesse feito para mim antes de EU passar dois dias em um único% 25 deslocado.

Frequently Asked Questions

URL encoding (percent-encoding) is the mechanism for representing characters in a URL that would otherwise be unsafe or structurally meaningful. Each problematic character is converted to its UTF-8 bytes, and each byte is written as a percent sign followed by two hexadecimal digits — a space becomes %20, an ampersand becomes %26. The rules are defined in RFC 3986. It exists because URLs only permit a limited character set, and characters like ? and & have jobs to do inside URL structure.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!