url-encode url-decode percent-encoding developer-tools rfc3986

Codificar URL Online Grátis: O guia definitivo para codificação por percentagem

Codifique e decodifique URLs online gratuitamente. Aprenda sobre a codificação por percentagem RFC 3986, caracteres reservados e problemas comuns na estrutura de URLs.

Codificar URL Online Grátis: O guia definitivo para codificação por percentagem

A codificação URL, também conhecida como codificação por percentagem (Percent-encoding), é um mecanismo para codificar informações num Identificador de Recursos Uniforme (URI). Embora possa parecer um simples detalhe técnico, é uma parte fundamental de como a web funciona, garantindo que os dados sejam transmitidos corretamente entre navegadores e servidores.

Neste guia, vamos aprofundar por que a codificação URL é necessária, como funciona e forneceremos uma ferramenta online conveniente para lidar com isso por si.

Por que precisamos da codificação URL?

Os URLs (Uniform Resource Locators) têm um conjunto de caracteres limitado definido pelo RFC 3986. Eles só podem conter certos caracteres. Se precisar de incluir caracteres que não fazem parte deste conjunto — como espaços, caracteres não ASCII (como os em chinês ou árabe) ou caracteres com significado especial num URL (como & ou =) — deve codificá-los.

Caracteres Reservados vs. Não Reservados

De acordo com a especificação, os caracteres são divididos em duas categorias:

  1. Caracteres Não Reservados: Podem ser usados num URL sem serem codificados. Incluem:

    • Letras maiúsculas e minúsculas (A-Z, a-z)
    • Dígitos decimais (0-9)
    • Hífen (-), sublinhado (_), ponto (.) e til (~)
  2. Caracteres Reservados: Têm um significado especial num URL (por exemplo, são usados como delimitadores como /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =). Se esses caracteres fizerem parte dos dados que estão a ser enviados (como uma consulta de pesquisa) e não estiverem a atuar como delimitadores, devem ser codificados.

Como funciona a codificação por percentagem

A codificação por percentagem substitui um carácter reservado por um % seguido pela representação hexadecimal de dois dígitos do seu valor ASCII.

Por exemplo:

  • Um espaço torna-se %20 (valor ASCII 32, hex 20).
  • Um ponto de exclamação (!) torna-se %21 (valor ASCII 33, hex 21).
  • Um e comercial (&) torna-se %26 (valor ASCII 38, hex 26).

Tabela de caracteres codificados comuns

Carácter Valor Codificado Descrição
Espaço %20 ou + Depende da parte do URL
! %21 Ponto de exclamação
# %23 Cardinal (identificador de fragmento)
$ %24 Cifrão
& %26 E comercial (delimitador de consulta)
' %27 Aspa simples
( %28 Parêntese esquerdo
) %29 Parêntese direito
* %2A Asterisco
+ %2B Sinal de mais
, %2C Vírgula
/ %2F Barra inclinada (delimitador de caminho)
: %3A Dois pontos
; %3B Ponto e vírgula
= %3D Sinal de igual (parâmetro de consulta)
? %3F Ponto de interrogação (início da consulta)
@ %40 Arroba

Lidar com espaços: %20 vs. +

Pode ter notado que às vezes os espaços são codificados como %20 e outras vezes como +.

  • %20 é a codificação padrão para um espaço em qualquer parte do URI.
  • + é especificamente usado para espaços dentro da query string de um URL (após o ?). Isto vem do tipo de média legado application/x-www-form-urlencoded usado por formulários HTML.

Ferramentas e bibliotecas modernas geralmente lidam com isto automaticamente, mas é um ponto comum de confusão para os programadores.

Codificação URL em programação

A maioria das linguagens de programação fornece funções integradas para codificação e descodificação URL.

JavaScript

// Codificar um componente de URI
const query = "olá mundo & amigos";
const encoded = encodeURIComponent(query);
console.log(encoded); // Resultado: ol%C3%A1%20mundo%20%26%20amigos

// Descodificar
const decoded = decodeURIComponent(encoded);
console.log(decoded); // Resultado: olá mundo & amigos

Python

import urllib.parse

query = "olá mundo & amigos"
encoded = urllib.parse.quote(query)
print(encoded) # Resultado: ol%C3%A1%20mundo%20%26%20amigos

decoded = urllib.parse.unquote(encoded)
print(decoded) # Resultado: olá mundo & amigos

PHP

<?php
$query = "olá mundo & amigos";
$encoded = urlencode($query);
echo $encoded; // Resultado: ol%C3%A1+mundo+%26+amigos

$decoded = urldecode($encoded);
echo $decoded; // Resultado: olá mundo & amigos
?>

Perguntas Frequentes (FAQ)

1. Devo codificar o URL inteiro ou apenas partes dele?

Geralmente deve apenas codificar os valores dos seus parâmetros de consulta ou segmentos específicos do caminho. Codificar o URL inteiro (incluindo os separadores http://, :, e /) torná-lo-á inválido como URI. Use encodeURIComponent() para valores e encodeURI() para o URI inteiro (ele saltará os delimitadores).

2. A codificação URL é o mesmo que a codificação Base64?

Não. A codificação URL (codificação por percentagem) é usada para escapar caracteres num URL. Base64 é usado para representar dados binários como uma string de 64 caracteres ASCII. Servem propósitos completamente diferentes.

3. Por que recebi um erro de "Malformed URI"?

Isto geralmente acontece durante a descodificação quando a string contém um carácter % que não é seguido por dois dígitos hexadecimais válidos. Por exemplo, index.php?name=100% causaria um erro porque o % no final não é um início válido de uma sequência codificada.

4. A codificação URL suporta Unicode?

Sim. A codificação URL moderna (baseada em UTF-8) lida com Unicode convertendo primeiro o carácter para a sua sequência de bytes UTF-8 e depois codificando por percentagem cada byte. Por exemplo, o carácter (UTF-8: E6 B1 89) torna-se %E6%B1%89.

Conclusão

A codificação URL é uma ferramenta simples mas vital para garantir a integridade dos dados na web. Quer esteja a construir uma aplicação web, a depurar chamadas de API ou apenas curioso sobre como a web funciona, compreender a codificação por percentagem é essencial.

Precisa de codificar ou descodificar uma string rapidamente? Use a nossa Ferramenta de Codificação/Descodificação URL para o fazer em segundos!