Por Qué Tu URL Se Rompió (Y Cómo Arreglarlo)
La codificación URL no es opcional. Por qué los caracteres especiales causan problemas y qué hacer al respecto.
Pegas una URL en un email. Alguien le hace clic. Obtienen un 404.
La URL se veía bien. Pero en algún lugar entre tu navegador y el suyo, un espacio se convirtió en %20, un ampersand desapareció, o un signo de más se convirtió en algo completamente diferente.
La codificación URL existe porque las URLs solo pueden contener ciertos caracteres. Todo lo demás necesita ser traducido.
El Problema con Caracteres Especiales
Las URLs se diseñaron en los primeros días del internet con un conjunto limitado de caracteres. Estos son seguros:
A-Z a-z 0-9 - _ . ~
¿Todo lo demás? Potencialmente problemático.
Espacios se convierten en %20 o + dependiendo del contexto. Una URL con un espacio literal se romperá.
Ampersands (&) separan parámetros de consulta. Si tus datos contienen un ampersand, el analizador de URL piensa que está iniciando un nuevo parámetro.
Signos de interrogación (?) señalan el inicio de cadenas de consulta. Uno en tus datos confunde todo.
Cuándo la Codificación Ocurre Automáticamente
Los navegadores codifican URLs cuando las escribes. Por eso puedes pegar "restaurantes nueva york" en Google y funciona.
Pero los sistemas automatizados a menudo no lo hacen. APIs, scripts, clientes de email: podrían pasar tu URL exactamente como está escrita. Si contiene caracteres inseguros, se rompe.
La Trampa de Doble Codificación
Aquí es donde se vuelve molesto.
Codificas una URL. Luego la pones en otra URL como parámetro. El sistema la codifica de nuevo. Ahora %20 se convierte en %2520.
Cuando se decodifica, obtienes %20 en lugar de un espacio.
Esto pasa constantemente con URLs de redirección, parámetros de rastreo y callbacks OAuth. Si tu URL se ve destrozada con signos de porcentaje extra, verifica doble codificación.
Errores Comunes de Codificación
Codificar la URL completa. No lo hagas. Solo codifica los valores, no la estructura. https:// no debería convertirse en https%3A%2F%2F.
Olvidar el signo de más. En cadenas de consulta, + significa espacio. Si tus datos tienen un signo de más literal, necesita codificación o desaparece.
Asumir que la codificación es idempotente. Codificar una cadena ya codificada produce salida diferente. Verifica si algo está codificado antes de codificarlo.
Ejemplos Prácticos
Una consulta de búsqueda con espacios:
Antes: https://ejemplo.com/buscar?q=pizza nueva york
Después: https://ejemplo.com/buscar?q=pizza%20nueva%20york
Una URL de callback como parámetro:
callback = https://misitio.com/auth?token=abc
Codificado: https%3A%2F%2Fmisitio.com%2Fauth%3Ftoken%3Dabc
Una dirección de email en una URL:
Antes: usuario+etiqueta@ejemplo.com
Después: usuario%2Betiqueta%40ejemplo.com
Depurar Problemas de URL
Verifica la solicitud real. Las herramientas de desarrollo del navegador te muestran qué se está enviando. Compáralo con lo que esperabas.
Decodifica e inspecciona. Si una URL no está funcionando, decodifícala para ver qué está recibiendo realmente el servidor.
Prueba con caracteres especiales. Incluye espacios, ampersands y signos de más en tus datos de prueba. Si funciona con "prueba" pero falla con "prueba & verifica", tienes un problema de codificación.
La codificación URL es una de esas cosas que funciona invisiblemente hasta que no lo hace. Entender las reglas te ayuda a depurar más rápido cuando las URLs se rompen misteriosamente.