以前在做支付宝支付中遇见,我们一般情况下把 url __ UrlEncode __ 一下,并不需要base64
知乎的上的解答:https://www.zhihu.com/question/19711134
-
base64 是什么鬼?
由于 ASCII 码称为了国际标准,所以我们要把其它字符转成 ASCII 就要用到 base64。
utf-8 -> base64(编码) -> ASCII
ASCII -> base64(解码) -> utf-8这样就可以让只支持 ASCII 的计算机支持 utf-8 了。
具体的算法转换方法:廖雪峰老师的博客
-
UrlEncode
例子:www.baidu.com?a=nihao
上面的例子可以看出 a 的值是你好
如果要把 a 的值换成 “=” 字符呢?这样吗:www.baidu.com?a== ,肯定不行啦,“=” 是特殊字符
所以把 “=” UrlEncode后 “%3d”
www.baidu.com?a=%3d服务器拿到 a 解码得到 “=”
所以说 url 是限制性编码
- 回过头看看,支付宝为什么要 base64,猜测如下
为了减轻服务器压力,加密与解密都需要 base64 转码,放在支付宝服务器上 base64 不如分发给各个用户的服务器。 减少了 cpu 的运算。