为何要编码
简朴粗犷的诠释就是为了数据的安全性。
编码/解码经常运用要领(仅针对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))) // 解码