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ácterURL CodificadoDescripción
Space%20Carácter más común que requiere codificación URL
!%21Signo de exclamación
"%22Comillas dobles
#%23Símbolo de numeral (usado para fragmentos URL)
$%24Signo de dólar
%%25Signo de porcentaje (carácter de escape en codificación URL)
&%26Ampersand (usado para separación de parámetros URL)
'%27Comilla simple
(%28Paréntesis de apertura
)%29Paréntesis de cierre
+%2BSigno de suma
,%2CComa
/%2FBarra diagonal (separador de ruta URL)
=%3DSigno igual (asignación de parámetros URL)
?%3FSigno 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.