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

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

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

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

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

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

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

注意:直接使用 btoa 處理中文或特殊符號(hào)會(huì)報(bào)錯(cuò)。

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

當(dāng)密碼包含中文、Emoji 等多字節(jié)字符時(shí),需先進(jìn)行 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é)序列,再通過(guò)正則替換為二進(jìn)制格式。

方法 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ìn)制數(shù)據(jù),無(wú)需手動(dòng)替換字符。

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

在 Node.js 中需使用 Buffer 對(duì)象:

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 默認(rèn)使用 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"

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

五、第三方庫(kù)(復(fù)雜場(chǎng)景推薦)

使用 js-base64 庫(kù)簡(jiǎn)化操作:

import Base64 from 'js-base64';

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

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

優(yōu)勢(shì):支持 URL 安全模式、自動(dòng)填充等高級(jí)功能。

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

相關(guān)文章

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

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

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

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

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

    原生Javascript/原生JS修改CSS樣式的4種方式簡(jiǎn)單示例

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

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

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

    JS監(jiān)聽(tīng)組合按鍵思路及實(shí)現(xiàn)過(guò)程

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

    使用正則替換變量

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

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

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

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

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

    H5上傳本地圖片并預(yù)覽功能

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

    alert中斷settimeout計(jì)時(shí)功能

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

最新評(píng)論

石嘴山市| 镇平县| 略阳县| 措美县| 仪征市| 湛江市| 惠来县| 石屏县| 敦煌市| 武威市| 莱州市| 安福县| 玉林市| 青神县| 武冈市| 阳朔县| 苍山县| 湖口县| 江城| 宜宾市| 甘谷县| 金川县| 城口县| 都昌县| 弥渡县| 夏津县| 行唐县| 武穴市| 肥乡县| 桃源县| 乌兰浩特市| 曲麻莱县| 芦山县| 新巴尔虎左旗| 耿马| 东方市| 城步| 来安县| 南岸区| 前郭尔| 长子县|