天天看點

javascript 使用btoa和atob來進行Base64轉碼和解碼

大家好,又見面了,我是你們的朋友全棧君。

老是記不住這兩個函數,幹脆寫下來,比較好翻。

avascript原生的api本來就支援,Base64,但是由于之前的javascript局限性,導緻Base64基本中看不中用。目前html5标準正式化之際,Base64将有較大的轉型空間,對于Html5 Api中出現的如FileReader Api, 拖拽上傳,甚至是Canvas,Video截圖都可以實作。

好了,前言說了一大堆,開發者需要重視:

一.我們來看看,在javascript中如何使用Base64轉碼

var str = 'javascript'; window.btoa(str) //轉碼結果 "amF2YXNjcmlwdA==" window.atob("amF2YXNjcmlwdA==") //解碼結果 "javascript"            

複制

二.對于轉碼來說,Base64轉碼的對象隻能是字元串,是以來說,對于其他資料還有這一定的局限性,在此特别需要注意的是對Unicode轉碼。

var str = "China,中國" window.btoa(str)            

複制

Uncaught DOMException: Failed to execute ‘btoa’ on ‘Window’: The string to be encoded contains characters outside of the Latin1 range.

很明顯,這種方式是不行的,那麼如何讓他支援漢字呢,這就要使用window.encodeURIComponent和window.decodeURIComponent

var str = "China,中國"; window.btoa(window.encodeURIComponent(str)) //"Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ=" window.decodeURIComponent(window.atob('Q2hpbmElRUYlQkMlOEMlRTQlQjglQUQlRTUlOUIlQkQ=')) //"China,中國"           

複制

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/167149.html原文連結:https://javaforall.cn