base64 编码和 UrlEncode 见解

2,169 阅读1分钟

以前在做支付宝支付中遇见,我们一般情况下把 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 的运算。

个人博客: http://www.liangtongzhuo.com