Herramienta de Codificación/Decodificación URL
Preguntas Frecuentes
¿Qué es la codificación URL?
La codificación URL es un método para convertir caracteres en un formato que puede transmitirse a través de Internet. Las URL sólo se pueden enviar por Internet utilizando el conjunto de caracteres ASCII. Como las URL a menudo contienen caracteres fuera del conjunto ASCII, es necesario convertirlos. La codificación URL reemplaza los caracteres ASCII inseguros con un '%' seguido de dos dígitos hexadecimales.
¿Cómo funciona la codificación URL?
La codificación URL funciona reemplazando caracteres inseguros con un '%' seguido de dos dígitos hexadecimales que representan la codificación UTF-8 del carácter. Por ejemplo, el carácter de espacio se codifica como %20. Las URL no pueden contener espacios, por lo que se reemplazan por un signo más (+) o %20. Otros caracteres especiales se reemplazan con su código %xx correspondiente.
Caracteres comunes que necesitan codificación URL
Los siguientes son caracteres comunes que necesitan codificación URL cuando se usan en URLs:
Carácter | URL Codificado | Descripción |
---|---|---|
Space | %20 | Carácter más común que requiere codificación URL |
! | %21 | Signo de exclamación |
" | %22 | Comillas dobles |
# | %23 | Símbolo de numeral (usado para fragmentos URL) |
$ | %24 | Signo de dólar |
% | %25 | Signo de porcentaje (carácter de escape en codificación URL) |
& | %26 | Ampersand (usado para separación de parámetros URL) |
' | %27 | Comilla simple |
( | %28 | Paréntesis de apertura |
) | %29 | Paréntesis de cierre |
+ | %2B | Signo de suma |
, | %2C | Coma |
/ | %2F | Barra diagonal (separador de ruta URL) |
= | %3D | Signo igual (asignación de parámetros URL) |
? | %3F | Signo de interrogación (inicio de cadena de consulta URL) |
Implementación de codificación URL en diferentes lenguajes de programación
Aquí hay ejemplos de codificación y decodificación URL en varios lenguajes de programación:
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);
¿Cuál es la diferencia entre encodeURI y encodeURIComponent?
encodeURI() está diseñado para codificar un URI completo, por lo que no codifica caracteres que tienen un significado especial en una URL, como /, ?, :, @, &, =, +, $ y #. En contraste, encodeURIComponent() codifica todos los caracteres especiales, lo que lo hace adecuado para codificar partes de una URL, como los parámetros de consulta. Al codificar parámetros de consulta, siempre use encodeURIComponent() para asegurar que todos los caracteres especiales estén correctamente codificados.