Je vais offrir une alternative bizarre. Parfois, il est plus facile d'utiliser un codage différent, surtout si vous avez affaire à une variété de systèmes qui ne gèrent pas tous les détails du codage d'URL de la même manière. Ce n'est pas l'approche la plus courante, mais peut être utile dans certaines situations.
Plutôt que d'encoder les données par URL, vous pouvez les encoder en base64. L 'avantage de ceci est que les données encodées sont très génériques, constituées uniquement de caractères alpha et parfois de fin =
. Exemple:
Tableau de chaînes JSON:
["option", "Fred's dog", "Bill & Trudy", "param=3"]
Ces données, encodées en URL en tant que data
paramètre:
"data=%5B%27option%27%2C+%22Fred%27s+dog%22%2C+%27Bill+%26+Trudy%27%2C+%27param%3D3%27%5D"
Idem, encodé en base64:
"data=WyJvcHRpb24iLCAiRnJlZCdzIGRvZyIsICJCaWxsICYgVHJ1ZHkiLCAicGFyYW09MyJd"
L'approche base64 peut être un peu plus courte, mais plus important encore, elle est plus simple. J'ai souvent des problèmes pour déplacer des données encodées en URL entre cURL, les navigateurs Web et d'autres clients, généralement en raison de citations, de %
signes intégrés , etc. Base64 est très neutre car il n'utilise pas de caractères spéciaux.