为什么要编码
简单粗暴的解释就是为了数据的安全性。
编码/解码常用方法(仅针对Base64)
- 编码
我们一般使用 window.btoa()
对原始数据进行编码。
- 解码
我们一般使用 window.atob()
对编码过后的数据进行编码。
- 注意点
如果所示,上面说到的编码/解码方法并不支持中文
,因为它们只支持ASCII 编码
。
但是在实际开发中,前后端要传递的数据通常不可能只有英文或者数字的。那么一旦我们要编码或者说解码的时候出现了中文字符串怎么办呢?
由于btoa()
跟atob()
只支持ASCII 编码
,所以我们可以先将带中文的字符串转码成ASCII 编码
,这里要用到两种方法,encodeURIComponent
与 decodeURIComponent
, 然后再进行编码/解码操作,这样就可以解决不支持中文的问题。
-
转换 ASCII 编码
window.btoa(encodeURIComponent('中文')) 进行转码之后在编码。
decodeURIComponent(window.atob('JUU0JUI4JUFEJUU2JTk2JTg3'))
对数据进行解码。
- 最优方案
在某些情况下,用了上面的方法也会出现中文乱码的情况,如GitHub API获取到的README、QQ音乐歌词API解析出来的歌词等。
如果出现了这种情况,我们可以使用 unescape()
跟 escape()
方法对做过解码/编码处理的数据进行utf-8
再解码/编码。语法如下:
window.btoa(unescape(encodeURIComponent(str))) //编码
decodeURIComponent(escape(window.atob(str))) // 解码
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。