Ofreceré una alternativa extraña. A veces es más fácil usar una codificación diferente, especialmente si se trata de una variedad de sistemas que no manejan todos los detalles de la codificación URL de la misma manera. Este no es el enfoque más convencional, pero puede ser útil en ciertas situaciones.
En lugar de codificar con URL los datos, puede codificarlos en base64. El beneficio de esto es que los datos codificados son muy genéricos y consisten solo en caracteres alfabéticos y, a veces, en los finales =
. Ejemplo:
Conjunto de cadenas JSON:
["option", "Fred's dog", "Bill & Trudy", "param=3"]
Esos datos, codificados en URL como el data
parámetro:
"data=%5B%27option%27%2C+%22Fred%27s+dog%22%2C+%27Bill+%26+Trudy%27%2C+%27param%3D3%27%5D"
Lo mismo, codificado en base64:
"data=WyJvcHRpb24iLCAiRnJlZCdzIGRvZyIsICJCaWxsICYgVHJ1ZHkiLCAicGFyYW09MyJd"
El enfoque base64 puede ser un poco más corto, pero lo más importante es que es más simple. A menudo tengo problemas para mover datos codificados con URL entre cURL, navegadores web y otros clientes, generalmente debido a comillas, %
signos incrustados, etc. Base64 es muy neutral porque no usa caracteres especiales.