Base64 JS编码/解码

为何要编码

简单粗暴的解释就是为了数据的安全性。后端

编码/解码经常使用方法(仅针对Base64)

  • 编码

咱们通常使用 window.btoa() 对原始数据进行编码。安全

  • 解码

咱们通常使用 window.atob() 对编码事后的数据进行编码。编码

  • 注意点

clipboard.png

若是所示,上面说到的编码/解码方法并不支持中文,由于它们只支持ASCII 编码spa

可是在实际开发中,先后端要传递的数据一般不可能只有英文或者数字的。那么一旦咱们要编码或者说解码的时候出现了中文字符串怎么办呢?code

因为btoa()atob()只支持ASCII 编码,因此咱们能够先将带中文的字符串转码成ASCII 编码,这里要用到两种方法,encodeURIComponentdecodeURIComponent, 而后再进行编码/解码操做,这样就能够解决不支持中文的问题。blog

  • 转换 ASCII 编码ip

    window.btoa(encodeURIComponent('中文')) 进行转码以后在编码。

clipboard.png

decodeURIComponent(window.atob('JUU0JUI4JUFEJUU2JTk2JTg3'))
     对数据进行解码。

clipboard.png

  • 最优方案

在某些状况下,用了上面的方法也会出现中文乱码的状况,如GitHub API获取到的README、QQ音乐歌词API解析出来的歌词等。utf-8

若是出现了这种状况,咱们可使用 unescape()escape() 方法对作过解码/编码处理的数据进行utf-8再解码/编码。语法以下:开发

window.btoa(unescape(encodeURIComponent(str))) //编码

decodeURIComponent(escape(window.atob(str)))   // 解码
相关文章
相关标签/搜索