Ich werde eine seltsame Alternative anbieten. Manchmal ist es einfacher, unterschiedliche Codierungen zu verwenden, insbesondere wenn Sie mit einer Vielzahl von Systemen arbeiten, die nicht alle Details der URL-Codierung auf dieselbe Weise verarbeiten. Dies ist nicht der gängigste Ansatz, kann jedoch in bestimmten Situationen nützlich sein.
Anstatt die Daten per URL zu codieren, können Sie sie mit base64 codieren. Dies hat den Vorteil, dass die codierten Daten sehr allgemein sind und nur aus Alpha-Zeichen und manchmal nachgestellten Zeichen bestehen =. Beispiel:
JSON-Array von Zeichenfolgen:
["option", "Fred's dog", "Bill & Trudy", "param=3"]
Diese Daten, URL-codiert als dataParameter:
"data=%5B%27option%27%2C+%22Fred%27s+dog%22%2C+%27Bill+%26+Trudy%27%2C+%27param%3D3%27%5D"
Gleiche, base64-codierte:
"data=WyJvcHRpb24iLCAiRnJlZCdzIGRvZyIsICJCaWxsICYgVHJ1ZHkiLCAicGFyYW09MyJd"
Der base64-Ansatz kann etwas kürzer sein, ist aber vor allem einfacher. Ich habe häufig Probleme beim Verschieben von URL-codierten Daten zwischen cURL, Webbrowsern und anderen Clients, normalerweise aufgrund von Anführungszeichen, eingebetteten %Zeichen usw. Base64 ist sehr neutral, da keine Sonderzeichen verwendet werden.