Codificación URL
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.
%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.