我会提供一个奇怪的选择。有时使用不同的编码会更容易,尤其是当您处理各种系统时,这些系统并非都以相同的方式处理 URL 编码的细节。这不是最主流的方法,但在某些情况下可以派上用场。
您可以对数据进行 base64 编码,而不是对数据进行 URL 编码。这样做的好处是编码数据非常通用,仅由字母字符组成,有时还包含尾随的=
's。例子:
JSON 字符串数组:
["option", "Fred's dog", "Bill & Trudy", "param=3"]
该数据,URL 编码为data
参数:
"data=%5B%27option%27%2C+%22Fred%27s+dog%22%2C+%27Bill+%26+Trudy%27%2C+%27param%3D3%27%5D"
同样,base64 编码:
"data=WyJvcHRpb24iLCAiRnJlZCdzIGRvZyIsICJCaWxsICYgVHJ1ZHkiLCAicGFyYW09MyJd"
base64 方法可以更短一些,但更重要的是它更简单。我经常在 cURL、Web 浏览器和其他客户端之间移动 URL 编码的数据时遇到问题,通常是由于引号、嵌入的%
标志等。Base64 非常中立,因为它不使用特殊字符。