Glosario

Codificación URL

codificación porcentualpercent-encoding

La codificación URL representa un byte dentro de un componente URI mediante un signo de porcentaje y dos dígitos hexadecimales.

Definición

La codificación URL, más exactamente codificación porcentual, representa un byte con % y dos dígitos hexadecimales. Por ejemplo, un espacio puede escribirse %20 y el propio porcentaje, %25.

Los caracteres URI no reservados—letras ASCII, dígitos, -, ., _ y ~—suelen permanecer iguales. Los demás pueden necesitar codificación según su posición y función.

Cómo funciona

El texto no ASCII se convierte primero en bytes, normalmente UTF-8, y cada byte necesario se codifica por separado. Así, café se convierte en caf%C3%A9.

Caracteres reservados como /, ?, #, & y = estructuran una URL. Su codificación depende de si los datos están en un segmento de ruta, parámetro, fragmento u otro componente.

Espacios y datos de formularios

La codificación porcentual normal escribe un espacio como %20. El formato application/x-www-form-urlencoded, usado en consultas y formularios HTML, suele usar +; un signo más literal se convierte entonces en %2B.

Las bibliotecas suelen ofrecer funciones distintas para URL completas, segmentos y valores de parámetros. La función específica evita tratar mal los delimitadores estructurales.

Seguridad y errores frecuentes

La codificación porcentual es reversible y no es cifrado. Los valores confidenciales pueden quedar expuestos en historial, registros, datos Referer y archivos del servidor.

Volver a codificar un porcentaje produce doble codificación: %20 pasa a %2520. La entrada decodificada debe validarse igualmente, porque la codificación no vuelve seguro un dato malicioso.

Preguntas frecuentes

%20 es el byte porcentual de un espacio. + representa espacio solo en codificación de formularios; en otro contexto puede ser un signo más literal.

Normalmente no. Codifica segmentos y valores con la función de cada componente para que los delimitadores estructurales conserven su significado.

No. Aporta compatibilidad sintáctica, pero no confidencialidad, integridad ni autenticidad.

Véase también
Herramientas relacionadas
Términos relacionados