Codificador de Componentes URI

Si alguna vez has pasado un valor como name=John & Jane a una URL sin codificarlo, conoces el dolor: el & se lee como un nuevo parámetro y el servidor ve basura. Esta herramienta codifica por porcentaje cualquier cadena para usarla con seguridad como componente URI siguiendo el RFC 3986, y convierte cada carácter reservado en un par %HH (espacios incluidos). Pega un fragmento, un valor de consulta o un destino de redirección y obtén algo seguro para concatenar en cualquier URL.

Cómo codificar un componente URI

  1. 1

    Pega tu valor

    Introduce un único valor de parámetro de consulta, segmento de ruta o cadena de fragmento.

  2. 2

    Elige codificar o decodificar

    Cambia de sentido para convertir los escapes de porcentaje de nuevo en los caracteres originales.

  3. 3

    Ejecútalo

    La herramienta codifica cada carácter en UTF-8 y luego reemplaza cada byte reservado por %HH.

  4. 4

    Copia el resultado

    Introduce la salida directamente en tu plantilla de URL o cliente de API.

Qué se escapa

Este codificador sigue el RFC 3986: solo el conjunto no reservado pasa intacto, A-Z a-z 0-9 - _ . ~. Todo lo demás se convierte en UTF-8 codificado en porcentaje, incluidos el espacio y los subdelimitadores ! * ' ( ) que encodeURIComponent de JavaScript dejaría intactos.

Carácter Codificado como
espacio %20
! %21
# %23
& %26
' %27
( %28
) %29
* %2A
+ %2B
/ %2F
= %3D
? %3F
é %C3%A9

Componente vs URI completo

Este codificador es más estricto que encodeURI, que deja intactos : / ? # [ ] @ ! $ & ' ( ) * + , ; = porque esos caracteres son estructurales en una URL. Para un valor que vas a concatenar en una cadena de consulta quieres la forma estricta, que es justo lo que produce esta herramienta: incluso escapa ! ' ( ) *, yendo un paso más allá que encodeURIComponent de JavaScript.

const url = `/search?q=${encodeURIComponent(userInput)}`;

Errores comunes

  • Doble codificación: codificar algo que ya está codificado te da %2520 en lugar de %20. Decodifica siempre primero si no estás seguro del origen.
  • Signos más en formularios: el envío de formularios HTML codifica los espacios como +, no como %20. Los decodificadores que siguen estrictamente el RFC 3986 (este incluido) no convertirán + de nuevo en un espacio. Usa un decodificador que entienda formularios en esos casos.
  • Separadores de ruta: codificar / aquí lo convierte en %2F. Si necesitas conservar la estructura real de la ruta, une primero los segmentos y codifica cada uno por separado.

Preguntas frecuentes

Es codificación por porcentaje del RFC 3986, la forma estricta. Escapa :, /, ?, # y los demás caracteres reservados (además de !, ', (, ) y *) porque un componente no debe llevar dentro la estructura de la URL. Eso lo hace más estricto que encodeURIComponent de JavaScript y mucho más estricto que encodeURI.

%20 es la forma del RFC 3986. + para el espacio es un legado de la codificación del cuerpo application/x-www-form-urlencoded. Para las cadenas de consulta en URLs, %20 siempre es seguro; + solo se espera en el servidor cuando lo produjo el envío de un formulario POST.

Cada carácter se codifica primero en UTF-8 y luego se escapa cada byte. Un carácter como 日 se convierte en %E6%97%A5 (tres bytes).

No. El valor se codifica por porcentaje en el servidor para construir tu resultado y no se almacena ni se registra; nada de lo que pegas se conserva una vez enviada la respuesta.

Herramientas relacionadas

Herramienta disponible en otros idiomas