簡單粗暴的解釋就是爲了數據的安全性。後端
咱們通常使用 window.btoa()
對原始數據進行編碼。安全
咱們通常使用 window.atob()
對編碼事後的數據進行編碼。編碼
若是所示,上面說到的編碼/解碼方法並不支持中文
,由於它們只支持ASCII 編碼
。spa
可是在實際開發中,先後端要傳遞的數據一般不可能只有英文或者數字的。那麼一旦咱們要編碼或者說解碼的時候出現了中文字符串怎麼辦呢?code
因爲btoa()
跟atob()
只支持ASCII 編碼
,因此咱們能夠先將帶中文的字符串轉碼成ASCII 編碼
,這裏要用到兩種方法,encodeURIComponent
與 decodeURIComponent
, 而後再進行編碼/解碼操做,這樣就能夠解決不支持中文的問題。blog
轉換 ASCII 編碼ip
window.btoa(encodeURIComponent('中文')) 進行轉碼以後在編碼。
decodeURIComponent(window.atob('JUU0JUI4JUFEJUU2JTk2JTg3')) 對數據進行解碼。
在某些狀況下,用了上面的方法也會出現中文亂碼的狀況,如GitHub API獲取到的README、QQ音樂歌詞API解析出來的歌詞等。utf-8
若是出現了這種狀況,咱們可使用 unescape()
跟 escape()
方法對作過解碼/編碼處理的數據進行utf-8
再解碼/編碼。語法以下:開發
window.btoa(unescape(encodeURIComponent(str))) //編碼 decodeURIComponent(escape(window.atob(str))) // 解碼