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)))   // 解碼
相關文章
相關標籤/搜索