Hay un enlace, por ejemplo. http://localhost:4200/test/test%20link , donde %20 es espacio codificado. Cuando copio este enlace e intento abrirlo en una nueva pestaña, el %20 cambiará a %2025 . ¿Cómo evitar este problema?
openWindow() { const link = 'test link'; window.open( `https://window-open-with-angular.stackblitz.io/${link}`, 'Independent Window', this.windowFeatures.join() );Escenario de caso: Alguien envía un enlace, en el que hay un espacio codificado. Cuando el receptor intenta abrir el enlace, falla debido a una codificación no deseada.
Aquí hay un ejemplo
El carácter de espacio se codifica como %20 y el carácter % se codifica como %25 .
La forma en que obtiene %2520 es cuando la URL ya tiene un %20 y se vuelve a codificar para producir %2520
Si copia y pega http://localhost:4200/test/test link , solo obtendrá %20, como se desea.
Si copia y pega http://localhost:4200/test/test%20link obtendrá %2520 .
No codifique su enlace dos veces cuando ya está codificado. Envía tu enlace con los espacios en bruto.
La respuesta anterior no responde al problema.
¿Cuál fue el problema que causó la doble codificación? En la parte superior de la aplicación, se realizó el enrutamiento con Angular Router , que codificaba la URL mientras se registraba al usuario.
¿Cómo se resolvió el problema? Se utilizó un método llamado decodeURIComponent() para resolver el problema.
router.navigate(urlPath) -> router.navigate(decodeURIComponent(urlPath)