logo
GeekFormat

Codificación URL

Código de codificación
Entrada URL
0 chars

Herramienta gratuita en línea de codificación/decodificación URL. Soporta cuatro modos encodeURIComponent/encodeURI/RFC 3986, resaltado en tiempo real de caracteres codificados, modo por lotes multilínea, Query Only para codificar solo valores de parámetros. Procesamiento local en el navegador, cero subidas.

Relacionado

Casos de uso

  • Depuración de parámetros API: compara las salidas de encodeURIComponent y encodeURI para solucionar problemas de coincidencia de firmas de interfaz
  • Decodificación de logs: decodifica por lotes contenido codificado URL en logs para restaurar texto legible
  • Construcción de URL: el modo Query Only mantiene los nombres de clave y codifica solo los valores, evitando errores de formato por concatenación manual
  • Desarrollo frontend: el resaltado ayuda a entender qué caracteres se escapan, útil para depurar redirecciones de página
  • Migración de datos: procesa por lotes datos codificados URL exportados de sistemas heredados para convertir a nuevo formato

Características

  • Cuatro modos de codificación: cambio con un clic entre encodeURIComponent / encodeURI / full / RFC 3986, comparación en tiempo real de las diferencias de salida
  • Resaltado de codificación: resalta en tiempo real los caracteres %XX escapados, marcas en color ámbar para ver los resultados de codificación de un vistazo
  • Modo por lotes: soporte para codificación/decodificación multilínea, cada línea se procesa independientemente, ideal para logs o datos por lotes
  • Modo Query Only: codifica solo la parte del valor del parámetro URL (después del signo igual), manteniendo intactos los nombres de clave, símbolos y estructura de ruta
  • Debounce en tiempo real: codificación/decodificación automática en 300ms, sin necesidad de hacer clic en botones, los resultados aparecen al escribir
  • Conteo de caracteres: muestra en tiempo real el número de caracteres ingresados, útil para verificar límites de longitud de parámetros API

Cómo Usar

  1. Ingresa o pega la URL o texto que deseas codificar/decodificar
  2. Selecciona la dirección de codificación (Codificar/Decodificar) y el modo (Component / URI / full / RFC 3986)
  3. Activa el modo por lotes para datos multilínea, o Query Only para codificar solo valores de parámetros
  4. Revisa el resultado resaltado y copia la cadena codificada para usar en solicitudes API o construcción de URL

Preguntas Frecuentes

¿Cuál es la diferencia entre encodeURIComponent y encodeURI?

encodeURIComponent codifica todos los caracteres no seguros, incluidos &, =, ?, etc., por lo que es adecuado para codificar valores de parámetros individuales. encodeURI conserva los caracteres estructurales de URL (:, /, ?, #, etc.), por lo que es adecuado para codificar URL completas. Caso de uso: usa Component para valores de parámetros, URI para URL completas.

¿Cuál es la diferencia entre RFC 3986 y la codificación estándar?

RFC 3986 es una versión actualizada del estándar URL que trata la virgulilla ~ como un carácter seguro que no requiere codificación, mientras que los estándares antiguos lo codifican como %7E. Usar RFC 3986 evita diferencias de análisis en algunos servidores y tiene mejor compatibilidad.

¿En qué escenarios se usa el modo Query Only?

Se usa cuando tienes una cadena de consulta URL como ?name=张三&city=北京 y solo deseas codificar los valores de los parámetros sin afectar los nombres de clave y símbolos. En este caso, name y city se mantienen igual, mientras los valores se codifican como %E5%BC%A0%E4%B8%89 y %E5%8C%97%E4%BA%AC.

¿Los espacios se codifican como + o como %20?

En el formato application/x-www-form-urlencoded (envío de formularios HTML), los espacios se codifican como +. Pero en rutas URL y en encodeURIComponent, los espacios siempre se codifican como %20. Esta herramienta usa el formato %20 por defecto.

¿Por qué diferentes herramientas producen diferentes resultados para el mismo carácter chino?

Depende del método de codificación de caracteres. Esta herramienta usa codificación UTF-8 (estándar Web), el carácter chino '中' se codifica como %E4%B8%AD. Si otras herramientas usan codificación GBK, el resultado será %D6%D0. Se recomienda usar siempre UTF-8 para URL Web.

¿Para qué sirve el resaltado de codificación?

Resalta los caracteres codificados en formato %XX (como espacio→%20), ayudando a entender las reglas de codificación y solucionar problemas. Las letras y números son caracteres seguros que no se codifican, solo el chino y símbolos especiales se codifican.

¿El propio % necesita ser codificado?

Sí. % es el carácter inicial de escape en codificación URL. Si aparece un % literal en un valor de parámetro, debe codificarse como %25; de lo contrario, se interpretará erróneamente como un prefijo de codificación causando errores de análisis. Por ejemplo, 100% debe codificarse como 100%25.

¿Qué es la codificación URL?

La codificación URL (codificación porcentual) es el proceso de convertir caracteres no seguros en URL al formato %XX. Las URL solo pueden contener un pequeño subconjunto de caracteres ASCII (letras, dígitos, -_.~), todos los demás caracteres (incluidos chino, espacios, símbolos especiales) deben codificarse antes de transmitirse en URL. Por ejemplo, el espacio se codifica como %20, el carácter chino '中' como %E4%B8%AD.

**encodeURIComponent vs encodeURI**: Estas son las dos funciones de codificación más utilizadas. encodeURIComponent codifica más exhaustivamente, incluidos delimitadores de parámetros como &, =, ?, por lo que es adecuada para codificar valores de parámetros individuales. encodeURI conserva la estructura URL (protocolo://, ruta, /, ?, #), por lo que es adecuada para codificar URL completas. Usarlas incorrectamente causa errores de análisis de parámetros.

**RFC 3986 vs estándares antiguos**: RFC 3986 trata la virgulilla ~ como un carácter seguro que no requiere codificación, mientras que los estándares tempranos lo codifican como %7E. Usar RFC 3986 reduce escapes innecesarios, mejora la legibilidad de URL y evita problemas de análisis de %7E en algunos servidores.

**Modo Query Only**: Se usa cuando solo necesitas codificar los valores de los parámetros de consulta en URL, sin afectar los nombres de clave, signos igual y símbolos &. Por ejemplo, ?name=张三 se codifica como ?name=%E5%BC%A0%E4%B8%89, manteniendo los nombres de clave legibles y codificando solo los valores.

**Resaltado de codificación**: Resalta en tiempo real los caracteres en formato %XX en color ámbar para que los usuarios vean de un vistazo qué caracteres se codificaron. Esto ayuda a entender las reglas de codificación: las letras y números generalmente son caracteres seguros que no se codifican, solo el chino y símbolos especiales se codifican. Todos los cálculos se realizan localmente en el navegador, sin subida de datos.

术语表

Codificación porcentual (Percent-encoding)
El nombre formal de la codificación URL, un método de codificación que representa caracteres mediante % seguido de dos dígitos hexadecimales. Por ejemplo, el espacio se codifica como %20, el carácter chino '中' como %E4%B8%AD.Wikipedia - Codificación porcentual
encodeURIComponent
Función integrada de JavaScript que codifica todos los caracteres excepto A-Z a-z 0-9 - _ . ! ~ * ' ( ). Se usa más comúnmente para codificar valores individuales de parámetros de consulta URL.
encodeURI
Función integrada de JavaScript que conserva los caracteres estructurales de URL (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) y solo codifica los caracteres que realmente necesitan codificación. Se usa para codificar URL completas.
RFC 3986
El último estándar IETF para sintaxis genérica URI (2005), que define las reglas de codificación URL y clasifica la virgulilla ~ como carácter no reservado (no requiere codificación). Reemplaza a los antiguos RFC 2396 y RFC 1738.RFC 3986
Caracteres reservados (Reserved Characters)
Caracteres con significado especial en URL, como : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Estos caracteres deben codificarse cuando se usan como datos, pero no en sus posiciones estructurales.
Caracteres no reservados (Unreserved Characters)
Caracteres seguros que se pueden usar en cualquier posición de URL sin codificación, incluidos A-Z, a-z, 0-9, -, _, ., ~ (según RFC 3986).
Cadena de consulta (Query String)
La parte de la URL después de ?, compuesta por pares key=value separados por &. Por ejemplo, en ?name=张三&age=20, name=张三 y age=20 son dos parámetros.
URLSearchParams
API proporcionada por navegadores modernos para construir y analizar cadenas de consulta URL de forma conveniente, manejando automáticamente la codificación y decodificación. Es más seguro y confiable que concatenar cadenas manualmente.
application/x-www-form-urlencoded
El formato de envío predeterminado de formularios HTML, donde los espacios se codifican como + en lugar de %20, ligeramente diferente de encodeURIComponent. Los frameworks del lado del servidor generalmente manejan ambos formatos automáticamente.
Codificación UTF-8
La codificación de caracteres estándar Web. En codificación URL, los caracteres no ASCII (como chino, emoji) se convierten primero a secuencias de bytes UTF-8, luego cada byte se codifica en formato %XX.

Comparación de escape de caracteres en 4 modos de codificación

CarácterSignificadoencodeURIComponentencodeURIRFC 3986
EspacioEspacio%20%20%20
!Signo de exclamación%21!%21
#Identificador de fragmento%23#%23
$Signo de dólar%24$%24
&Separador de parámetros%26&%26
'Comilla simple%27'%27
(Paréntesis izquierdo%28(%28
)Paréntesis derecho%29)%29
*Asterisco%2A*%2A
+Signo más%2B+%2B
,Coma%2C,%2C
/Separador de ruta%2F/%2F
:Dos puntos%3A:%3A
;Punto y coma%3B;%3B
=Signo igual%3D=%3D
?Cadena de consulta%3F?%3F
@Arroba%40@%40
~Virgulilla%7E%7E~

Referencia rápida de caracteres reservados URL comunes

CodificadoCarácter originalUso en URL
%20(espacio)Espacio
%21!Subdelimitador
%23#Identificador de fragmento (hash)
%25%Carácter de escape en sí mismo
%26&Separador de parámetros de consulta
%2B+Signo más / espacio en formularios
%2F/Separador de ruta
%3A:Separador de esquema
%3D=Separador clave-valor
%3F?Inicio de cadena de consulta
%40@Separador de autenticación/correo
%5B[Parámetro de array (RFC 3986)

Code Examples

Codificación/Decodificación URL en JavaScript

// encodeURIComponent: codifica valores de parámetros individuales (más común)
const param = encodeURIComponent('张三&李四');
console.log(param); // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

// encodeURI: codifica URL completa (conserva caracteres estructurales :/?#&=)
const url = encodeURI('https://example.com/search?q=hola mundo');
console.log(url);

// Decodificación
const decoded = decodeURIComponent(param);
console.log(decoded); // 张三&李四

// Compatible con RFC 3986 (~ no se codifica)
function rfc3986Encode(str) {
  return encodeURIComponent(str).replace(/[!'()*]/g, c => '%' + c.charCodeAt(0).toString(16).toUpperCase());
}

// URLSearchParams API (método moderno, codificación automática)
const params = new URLSearchParams({ name: '张三', city: '北京' });
console.log(params.toString());
// name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Codificación/Decodificación URL en Python

from urllib.parse import quote, unquote, urlencode, quote_plus

# quote: similar a encodeURIComponent
encoded = quote('张三&李四')
print(encoded)  # %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

# Modo RFC 3986 (~ no se codifica, es el predeterminado)
print(quote('hello~world'))  # hello~world

# quote_plus: espacios se codifican como + (formato de formulario)
print(quote_plus('hello world'))  # hello+world

# Decodificación
print(unquote(encoded))  # 张三&李四

# urlencode: construir cadena de consulta
params = urlencode({'name': '张三', 'city': '北京'})
print(params)
# name=%E5%BC%A0%E4%B8%89&city=%E5%8C%97%E4%BA%AC

Codificación/Decodificación URL en Java

import java.net.URLEncoder;
import java.net.URLDecoder;
import java.net.URI;
import java.nio.charset.StandardCharsets;

public class URLEncodeExample {
    public static void main(String[] args) throws Exception {
        // Codificación URL (URLEncoder es formato formulario, espacios son +)
        String encoded = URLEncoder.encode("张三&李四", "UTF-8");
        System.out.println(encoded);
        // %E5%BC%A0%E4%B8%89%26%E6%9D%8E%E5%9B%9B

        // Decodificación
        String decoded = URLDecoder.decode(encoded, "UTF-8");
        System.out.println(decoded); // 张三&李四

        // Construir URL completa (la clase URI maneja la codificación automáticamente)
        URI uri = new URI("https", "example.com", "/search", "q=hola", null);
        System.out.println(uri.toASCIIString());
    }
}

Authoritative References