base64編碼和解碼,原生js

2021-10-02 06:49:13 字數 1617 閱讀 6772

實際上,從ie10+瀏覽器開始,所有瀏覽器就原生提供了base64編碼解碼方法,不僅可以用於瀏覽器環境,service worker環境也可以使用。

方法名就是atob和btoa,具體語法如下:

1)base64解碼

語法為(瀏覽器中):  

var decodeddata = window.atob(encodeddata);
或者(瀏覽器或js worker執行緒中):

var decodeddata = self.atob(encodeddata);
例如:

window.atob('emhhbmd4aw54dq==');

// 返回:'zhangxinxu'

atob這個方法名稱乍一看,很奇怪,不知道這個單詞什麼意思。我們可以理解為 a to b,也就是從a到b。這裡的b指的就是base64嗎?哈哈哈,恭喜你!猜錯了!a指的才是base64,反的,b才是普通字元,普通意思就是low,俗稱low b。所以我們這麼記憶,low b,low b,b表示很low的普通字元,a才是base64,和首字母對應關係是反的。

因此,atob表示base64字元to普通字元,也就是base64解碼。

2)base64編碼

語法為(瀏覽器中):

var encodeddata = window.btoa(stringtoencode);
或者(瀏覽器或js worker執行緒中):

var encodeddata = self.btoa(stringtoencode);
例如:

window.btoa('zhangxinxu');

// 返回:'emhhbmd4aw54dq=='

btoa這個方法名稱乍一看,很奇怪,不知道這個單詞什麼意思。我們可以理解為 b to a,也就是從b到a。那b指什麼,a指什麼呢?和atob方法一樣,b指的是low b普通字串,a指的是base64字元。

因此,btoa方法表示low b普通字元to base64字元,也就是base64編碼。

ps:當下,仍有不少pc專案還需要相容ie9,所以,我們可以專門針對這些瀏覽器再引入一段ployfill指令碼或者乙個js檔案即可。

實際使用,我們可以借助ie條件注釋無縫對接。也就是html中嵌入下面一段**:

[if ie]表示所有ie瀏覽器,由於ie10+瀏覽器已經放棄了著名的ie條件注釋的支援,chrome等瀏覽器本身就不支援這個ie私有語法,因此,很天然的,上面一段script引入只在ie9-瀏覽器下有效。而我們本來就希望只ie8,ie9瀏覽器引入ployfill,於是正好完美銜接上。

也就是原生支援atob和btoa方法的瀏覽器認為就是一段無需關心的html注釋,不支援atob和btoa的ie9及其以下瀏覽器則會載入我們的base64-polyfill.js,使瀏覽器也支援window.btoa和window.atob這個語法。

base64編碼和解碼

base64是一種任意二進位製到文字字串的編碼方法,基於64個可列印字元來表示二進位制資料的方法。簡述base64編碼就是從二進位制到字元的過程。採用base64編碼具有不可讀性,需要解碼後才能閱讀。標準的base64並不適合直接放在url裡傳輸,因為url編碼器會把標準base64中的 和 字元變...

base64編碼 解碼

ps base64是一種資料編碼方式,目的是讓資料符合傳輸協議的要求,有些人誤用它進行資料加密 base64編碼 nsstring base64encodedstringwithstring nsstring string base64解碼 nsstring base64decodedstringw...

Base64編碼解碼

一.base64編碼由來 為什麼會有base64編碼呢?因為有些網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ascii碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如二進位製流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議...