Ferramenta de Codificação/Decodificação de URL
Perguntas Frequentes
O que é codificação de URL?
A codificação de URL é um método para converter caracteres em um formato que pode ser transmitido pela Internet. As URLs só podem ser enviadas pela Internet usando o conjunto de caracteres ASCII. Como as URLs frequentemente contêm caracteres fora do conjunto ASCII, eles precisam ser convertidos. A codificação de URL substitui caracteres ASCII inseguros por um '%' seguido por dois dígitos hexadecimais.
Como funciona a codificação de URL?
A codificação de URL funciona substituindo caracteres inseguros por um '%' seguido de dois dígitos hexadecimais que representam a codificação UTF-8 do caractere. Por exemplo, o caractere de espaço é codificado como %20. URLs não podem conter espaços, então eles são substituídos por um sinal de mais (+) ou %20. Outros caracteres especiais são substituídos pelos seus códigos %xx correspondentes.
Caracteres comuns que precisam de codificação de URL
Os seguintes caracteres precisam de codificação de URL quando usados em URLs:
| Caractere | URL Codificado | Descrição |
|---|---|---|
| Space | %20 | Caractere mais comum que requer codificação de URL |
| ! | %21 | Ponto de exclamação |
| " | %22 | Aspas duplas |
| # | %23 | Símbolo de hashtag (usado para fragmentos de URL) |
| $ | %24 | Símbolo de dólar |
| % | %25 | Símbolo de porcentagem (caractere de escape da codificação URL) |
| & | %26 | E comercial (usado para separação de parâmetros de URL) |
| ' | %27 | Aspas simples |
| ( | %28 | Parêntese de abertura |
| ) | %29 | Parêntese de fechamento |
| * | %2A | Asterisco |
| + | %2B | Sinal de mais |
| , | %2C | Vírgula |
| / | %2F | Barra (separador de caminho URL) |
| : | %3A | Dois pontos |
| ; | %3B | Ponto e vírgula |
| = | %3D | Sinal de igual (atribuição de parâmetro URL) |
| ? | %3F | Ponto de interrogação (início da string de consulta URL) |
| @ | %40 | Arroba |
| [ | %5B | Colchete de abertura |
| \ | %5C | Barra invertida |
| ] | %5D | Colchete de fechamento |
| ^ | %5E | Circunflexo |
| { | %7B | Chave de abertura |
| | | %7C | Barra vertical |
| } | %7D | Chave de fechamento |
| ~ | %7E | Til |
Implementação de codificação de URL em diferentes linguagens de programação
Aqui estão exemplos de codificação e decodificação de URL em várias linguagens de programação:
Go
package main
import (
"fmt"
"net/url"
)
func main() {
// Encode a URL
text := "Hello World! Special chars: &?=/";
encoded := url.QueryEscape(text)
fmt.Println("Encoded:", encoded)
// Decode a URL
decoded, err := url.QueryUnescape(encoded)
if err == nil {
fmt.Println("Decoded:", decoded)
}
}C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
// Function to URL-encode a string
char *url_encode(char *str) {
char *encoded = malloc(strlen(str) * 3 + 1);
char *pstr = str;
char *pbuf = encoded;
while (*pstr) {
if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~') {
*pbuf++ = *pstr;
} else if (*pstr == ' ') {
*pbuf++ = '+';
} else {
sprintf(pbuf, "%%%.2X", *pstr);
pbuf += 3;
}
pstr++;
}
*pbuf = '\\0';
return encoded;
}
int main() {
char *text = "Hello World! Special chars: &?=/";
char *encoded = url_encode(text);
printf("Original: %s\\n", text);
printf("Encoded: %s\\n", encoded);
free(encoded);
return 0;
}PHP
<?php
// URL encoding
$text = "Hello World! Special chars: &?=/";
$encoded = urlencode($text);
echo "Encoded: " . $encoded . "\\n";
// URL decoding
$decoded = urldecode($encoded);
echo "Decoded: " . $decoded . "\\n";
?>Python
import urllib.parse
# URL encoding
text = "Hello World! Special chars: &?=/"
encoded = urllib.parse.quote(text)
print(f"Encoded: {encoded}")
# URL decoding
decoded = urllib.parse.unquote(encoded)
print(f"Decoded: {decoded}")JavaScript
// URL encoding
const text = "Hello World! Special chars: &?=/";
const encoded = encodeURIComponent(text);
console.log("Encoded:", encoded);
// URL decoding
const decoded = decodeURIComponent(encoded);
console.log("Decoded:", decoded);TypeScript
// URL encoding
const text: string = "Hello World! Special chars: &?=/";
const encoded: string = encodeURIComponent(text);
console.log("Encoded:", encoded);
// URL decoding
const decoded: string = decodeURIComponent(encoded);
console.log("Decoded:", decoded);Qual é a diferença entre encodeURI e encodeURIComponent?
encodeURI() é projetado para codificar um URI completo, então não codifica caracteres que têm significado especial em uma URL, como /, ?, :, @, &, =, +, $ e #. Em contraste, encodeURIComponent() codifica todos os caracteres especiais, tornando-o adequado para codificar partes de uma URL, como parâmetros de consulta. Ao codificar parâmetros de consulta, sempre use encodeURIComponent() para garantir que todos os caracteres especiais sejam codificados corretamente.