Codificar y decodificar una URL

Codifica o decodifica una dirección, un valor de consulta o el cuerpo de un formulario. UTF-8 coincide con encodeURIComponent. Cambia la codificación si el otro lado no usa Unicode.

Tres codificaciones, tres sitios en la dirección

Una barra en la ruta tiene que seguir siendo barra. Dentro de un parámetro tiene que ser %2F. En un formulario el espacio es +; en la query, casi siempre %20. Codificar la dirección entera con la función equivocada abre otra página.

  • Un valor es encodeURIComponent. Búsqueda, id, vuelta.
  • La dirección completa es encodeURI. Se quedan : / ? #.
  • Cuerpo del formulario: el espacio pasa a más. Es un POST, no un enlace.

Lo que suele fallar

Un más de verdad dentro del valor tiene que ser %2B, si no el servidor lee un espacio. & y = dentro del valor abren el parámetro siguiente. UTF-8 es la predeterminada y coincide con encodeURIComponent: cada byte de una tilde se vuelve % más dos hexadecimales. «año» no es un solo escape. Si el otro lado no usa Unicode, cambia la codificación. Hex codifica los bytes crudos del cuadro.

No codifiques un https:// ya armado como si fuera un solo valor: desaparecen los dos puntos y las barras. Codifica las piezas y luego júntalas. Bytes: cadena a bytes. Otra forma: Base64.

Preguntas

El espacio se volvió un más

Estás en el cuerpo del formulario. Para un enlace, usa un solo valor.

Después de decodificar sigue el %20

Se codificó dos veces. Decodifica otra vez, hasta que se lea.