Guía
Cómo funciona el percent-encoding de una URL
Aprende qué caracteres codificar en un componente URL, cómo se transforma UTF-8 y por qué + no siempre significa espacio.
por Tools in a Tab · Publicado el · Revisado el
Respuesta breve
El percent-encoding representa un byte mediante % y dos cifras hexadecimales.
Permite incluir datos en un componente URI sin confundirlos con separadores
estructurales.
texto: café & té
componente: caf%C3%A9%20%26%20t%C3%A9
é se codifica primero como los bytes UTF-8 C3 A9, que se escriben
%C3%A9. El espacio es %20 y & pasa a %26 para que no se interprete como
separador de parámetros.
Caracteres no reservados y reservados
La RFC 3986 define como
no reservadas las letras, dígitos, -, ., _ y ~. Los reservados pueden
tener función sintáctica, como :, /, ?, #, [, ] y @, o separar
subcomponentes, como & y =.
No debes codificar toda una URL completa como si fuera un único valor: hacerlo
convertiría también /, ? y otros delimitadores necesarios. Codifica por
separado el nombre o valor que insertas.
El codificador URL trabaja con un componente y UTF-8, no con la estructura completa de una URL.
El caso de +
En el formato de formularios application/x-www-form-urlencoded, un espacio
suele representarse como +. En percent-encoding URI general, el espacio es
%20 y un + literal sigue siendo + salvo que la capa de formulario aplique
su regla. Conoce qué decodificador recibirá el dato.
Errores frecuentes
- Codificar dos veces
%C3%A9y obtener%25C3%25A9. - Decodificar antes de separar componentes y convertir datos en estructura.
- Usar Base64 estándar dentro de una URL sin tratar
+,/y=. - Aceptar secuencias
%incompletas o bytes que no formen UTF-8.
Conserva separadas la construcción de la URL, la codificación de componentes y la serialización de formularios. Son capas relacionadas, pero no idénticas.