JavaScript将字符串转为base64的五种方法
一、基础方法(仅限 ASCII 字符)
若密码仅包含 ASCII 字符(如英文、数字、常见符号),可直接使用原生函数 btoa():
const password = "MySecurePassword123!"; const base64Encoded = btoa(password); // 编码 console.log(base64Encoded); // 输出 "TXlTZWN1cmVQYXNzd29yZDEyMyE=" // 解码验证 const original = atob(base64Encoded); console.log(original); // 输出原密码
注意:直接使用 btoa 处理中文或特殊符号会报错。
二、处理非 ASCII 字符(推荐通用方案)
当密码包含中文、Emoji 等多字节字符时,需先进行 UTF-8 编码转换:
方法 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 将字符转为 UTF-8 字节序列,再通过正则替换为二进制格式。
方法 2:TextEncoder API(现代浏览器)
const password = "密码@安全!"; const encoder = new TextEncoder(); const data = encoder.encode(password); const base64Str = btoa(String.fromCharCode(...data)); console.log(base64Str); // 输出 "5a2g5YWDQOaUv+Wtpg=="
优势:直接处理二进制数据,无需手动替换字符。
三、Node.js 环境实现
在 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 编码,可直接处理多字节字符。
四、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 参数、文件名存储等。
五、第三方库(复杂场景推荐)
使用 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); // 输出原密码
优势:支持 URL 安全模式、自动填充等高级功能。
到此这篇关于JavaScript将字符串转为base64的五种方法的文章就介绍到这了,更多相关JavaScript字符串转base64内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
javascript function调用时的参数检测常用办法
js中并不直接支持类似c#的方法重载,所以只能变相的来解决,示意代码:(利用了内置属性arguments)2010-02-02
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
最近在做一个拖拽元素的附加功能,就是对齐到网格,实际上就是确定好元素的初始位置,然后拖拽元素时,每次移动固定的距离。让元素都可以在网格内对齐2016-11-11
BootStrap中关于Select下拉框选择触发事件及扩展
Select下拉框的问题,想在选择一个选项后,前台显示做出变动,并且知道选择的是第几个选项。 怎么解决这个问题呢?下面小编给大家带来了BootStrap中关于Select下拉框选择触发事件及扩展,需要的朋友参考下吧2016-11-11
js动态改变select选择变更option的index值示例
今天删除多个select值的时候出现了问题,搞了半天原来是索引引起的(即删除的时候要从索引大的开始删,然后再 删除索引小的2014-07-07


最新评论