最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript將字符串轉(zhuǎn)為base64的五種方法

 更新時間:2025年06月22日 12:01:12   作者:秀秀_heo  
這篇文章主要介紹了JavaScript將字符串轉(zhuǎn)為Base64的五種方法:ASCII用btoa,非ASCII需UTF-8編碼(encodeURIComponent或TextEncoder),Node.js用Buffer,URL安全需替換字符,第三方庫如js-base64提供更便捷功能,需要的朋友可以參考下

一、基礎方法(僅限 ASCII 字符)

若密碼僅包含 ASCII 字符(如英文、數(shù)字、常見符號),可直接使用原生函數(shù) btoa()

const password = "MySecurePassword123!";
const base64Encoded = btoa(password); // 編碼
console.log(base64Encoded); // 輸出 "TXlTZWN1cmVQYXNzd29yZDEyMyE="

// 解碼驗證
const original = atob(base64Encoded);
console.log(original); // 輸出原密碼

注意:直接使用 btoa 處理中文或特殊符號會報錯。

二、處理非 ASCII 字符(推薦通用方案)

當密碼包含中文、Emoji 等多字節(jié)字符時,需先進行 UTF-8 編碼轉(zhuǎn)換:

方法 1:encodeURIComponent + btoa

function encodeToBase64(str) {
    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, 
        (match, p1) => String.fromCharCode(parseInt(p1, 16)))
    );
}

const password = "密碼@安全!";
const base64Str = encodeToBase64(password); // 編碼
console.log(base64Str); // 輸出 "JUU1JUI4JUEzJUU3JUEwJTgxJUU1JUFFJTg4JUU1JTg1JUE4IQ=="

// 解碼
function decodeFromBase64(str) {
    return decodeURIComponent(atob(str).split('').map(c => 
        '%' + c.charCodeAt(0).toString(16).padStart(2, '0')
    ).join(''));
}
console.log(decodeFromBase64(base64Str)); // 輸出原密碼

原理:encodeURIComponent 將字符轉(zhuǎn)為 UTF-8 字節(jié)序列,再通過正則替換為二進制格式。

方法 2:TextEncoder API(現(xiàn)代瀏覽器)

const password = "密碼@安全!";
const encoder = new TextEncoder();
const data = encoder.encode(password);
const base64Str = btoa(String.fromCharCode(...data));
console.log(base64Str); // 輸出 "5a2g5YWDQOaUv+Wtpg=="

優(yōu)勢:直接處理二進制數(shù)據(jù),無需手動替換字符。

三、Node.js 環(huán)境實現(xiàn)

在 Node.js 中需使用 Buffer 對象:

const password = "密碼@安全!";
const base64Str = Buffer.from(password).toString('base64'); // 編碼
console.log(base64Str); // 輸出 "5a2g5YWDQOaUv+Wtpg=="

// 解碼
const decoded = Buffer.from(base64Str, 'base64').toString('utf8');
console.log(decoded); // 輸出原密碼

注意:Buffer 默認使用 UTF-8 編碼,可直接處理多字節(jié)字符。

四、URL 安全 Base64 格式

若需在 URL 中使用 Base64,需替換特殊字符:

function toUrlSafeBase64(str) {
    return btoa(str)
        .replace(/\+/g, '-')
        .replace(/\//g, '_')
        .replace(/=+$/, ''); // 去除填充符
}

const safeBase64 = toUrlSafeBase64("password#secure!");
console.log(safeBase64); // 輸出 "cGFzc3dvcmQjc2VjdXJlIQ"

適用場景:URL 參數(shù)、文件名存儲等。

五、第三方庫(復雜場景推薦)

使用 js-base64 庫簡化操作:

import Base64 from 'js-base64';

// 編碼(自動處理 Unicode)
const base64Str = Base64.encode("密碼@安全!");
console.log(base64Str); // 輸出 "5a2g5YWDQOaUv+Wtpg=="

// 解碼
const original = Base64.decode(base64Str);
console.log(original); // 輸出原密碼

優(yōu)勢:支持 URL 安全模式、自動填充等高級功能。

到此這篇關于JavaScript將字符串轉(zhuǎn)為base64的五種方法的文章就介紹到這了,更多相關JavaScript字符串轉(zhuǎn)base64內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于js文件加載優(yōu)化(詳解)

    基于js文件加載優(yōu)化(詳解)

    下面小編就為大家分享一篇基于js文件加載優(yōu)化(詳解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • big.js與bignumber.js的差異、統(tǒng)一配置與避坑技巧完全指南

    big.js與bignumber.js的差異、統(tǒng)一配置與避坑技巧完全指南

    big.js是一個小巧、快速且易于使用的JavaScript庫,專門用于任意精度的十進制算術(shù)運算,這篇文章主要介紹了big.js與bignumber.js的差異、統(tǒng)一配置與避坑技巧完全指南,需要的朋友可以參考下
    2026-01-01
  • 原生Javascript/原生JS修改CSS樣式的4種方式簡單示例

    原生Javascript/原生JS修改CSS樣式的4種方式簡單示例

    在網(wǎng)頁開發(fā)中我們經(jīng)常會用到JavaScript來操作網(wǎng)頁元素,其中一個常見的操作就是修改元素的CSS樣式,下面這篇文章主要給大家介紹了關于原生Javascript/原生JS修改CSS樣式的4種方式,需要的朋友可以參考下
    2024-03-03
  • js定時器(執(zhí)行一次、重復執(zhí)行)

    js定時器(執(zhí)行一次、重復執(zhí)行)

    這篇文章主要分享一段js代碼,有關js定時器的小例子,分為執(zhí)行一次的定時器與重復執(zhí)行的定時器,需要的朋友可以參考下
    2014-03-03
  • JS監(jiān)聽組合按鍵思路及實現(xiàn)過程

    JS監(jiān)聽組合按鍵思路及實現(xiàn)過程

    這篇文章主要介紹了JS監(jiān)聽組合按鍵思路及實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 使用正則替換變量

    使用正則替換變量

    使用正則替換變量...
    2007-05-05
  • 詳解extract-text-webpack-plugin 的使用及安裝

    詳解extract-text-webpack-plugin 的使用及安裝

    這篇文章主要介紹了詳解extract-text-webpack-plugin 的使用及安裝,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • js調(diào)用AJAX時Get和post的亂碼解決方法

    js調(diào)用AJAX時Get和post的亂碼解決方法

    在使用"get"時,抓取的頁面最后加上編碼類型,在使用post時用vbscript解決了編碼問題,具體實現(xiàn)如下,有類似情況的朋友可以參考下哈
    2013-06-06
  • H5上傳本地圖片并預覽功能

    H5上傳本地圖片并預覽功能

    這篇文章主要為大家詳細介紹了H5上傳本地圖片并預覽的實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • alert中斷settimeout計時功能

    alert中斷settimeout計時功能

    在測試過程中發(fā)現(xiàn)alert會中斷settimeout的計時功能,關閉對話框后,settimeout的時間會重頭開始計時,而不是從中斷處,感興趣的朋友可以了解下
    2013-07-07

最新評論

双流县| 同江市| 冕宁县| 霸州市| 景谷| 巴塘县| 拜城县| 湘阴县| 潞西市| 正蓝旗| 潼南县| 根河市| 松原市| 瓮安县| 察雅县| 渝北区| 靖宇县| 邹平县| 琼海市| 青河县| 神池县| 甘谷县| 霍林郭勒市| 酉阳| 高唐县| 吐鲁番市| 榆社县| 错那县| 襄城县| 法库县| 奉节县| 大余县| 财经| 阿拉善左旗| 铁力市| 阆中市| 景谷| 滁州市| 泸西县| 太仆寺旗| 永德县|