日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

使用 JavaScript 进行 Base64 编码与解码

發布時間:2024/9/30 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 JavaScript 进行 Base64 编码与解码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Base64 編碼普遍應用于需要通過被設計為處理文本數據的媒介上儲存和傳輸二進制數據而需要編碼該二進制數據的場景這樣是為了保證數據的完整并且不用在傳輸過程中修改這些數據。Base64也被一些應用(包括使用MIME的電子郵件)和在XML中儲存復雜的數據時使用。?

由于 BASE64 是一種非常常用的編碼方案,在開發中經常會使用到,所以當前瀏覽器標準 API(atob、btoa) 都支持進行 BASE64 操作,遺憾的是上面提到的標準 API 僅支持 ASCII 字符。所以使用范圍受限。

1. JS 標準API atob 與 btoa?

PS:僅支持 ASCII 字符串,不能處理中文等

在JavaScript中,有2個函數分別用來處理解碼和編碼base64?字符串:

atob()? //?解碼 btoa()? //?編碼

這里的 a 指的是?ASCII 編碼,即“美國信息交換標準代碼”。b 指的是 Base64 編碼。結合 to 這個單詞,就很容易知道 atob 與 btoa 這兩個函數的作用是干嘛的了。

atob()?函數能夠解碼通過 base-64 編碼的字符串數據。相反地,btoa()?函數能夠從二進制數據“字符串”創建一個base-64編碼的ASCII 字符串。

Demo 樣例:

對 ‘中文’ 二字進行 BASE64 編碼為:【5Lit5paHCg==】

在瀏覽器控制臺直接使用 btoa('中文') 進行 base64 編碼會報錯

在瀏覽器控制臺直接使用 atob('5Lit5paHCg==') 進行 base64 解碼會出現亂碼

更多詳情參考 MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

MDN 中的方案一,雖然實現了能夠處理中文,但并不是直接對中文等非 ASCII 字符的原始二進制流進行 BASE64 編碼,僅僅是將轉義【轉義即為:將中文等特殊字符替換為特定 ASCII 字符的組合】之后不過包含非 ASCII 字符的內容進行 BASE64 編碼,與直接對原始數據的二進制流進行 BASE64 編碼結果是不一樣的。所以不適合采用。

2. 正確有效的 BASE64 編碼姿勢

2.1 使用 Buffer 對象

Buffer 是 Nodejs 中的標準全局對象(即無需導入),可以拿來使用。所以如果你的項目是基于 nodejs 構建的(比如你是使用 vue-cli 創建的 vue 項目),那么你只需一行代碼就可以做到。

let base64Str = Buffer.from('Hello 中國!', 'utf-8').toString('base64') // 編碼 console.log('Hello 中國!: ' + base64Str) let decStr = Buffer.from(base64Str, 'base64').toString('utf8') // 解碼 console.log('解析Base64: ' + decStr)

Buffer 詳情參考:http://nodejs.cn/api/buffer.html#buffer_buffers_and_character_encodings

2.1 非 NodeJS 環境解決方案

這時候就要選用第三方已經編譯好的庫了,這里推薦使用?js-base64:

項目地址:https://github.com/dankogai/js-base64

具體使用項目中已經寫的很清楚了,這里就不再啰嗦。

Base64.encode('小飼弾'); // 5bCP6aO85by+ Base64.encodeURI('小飼弾'); // 5bCP6aO85by-

總結

以上是生活随笔為你收集整理的使用 JavaScript 进行 Base64 编码与解码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。