当前位置:首页 > JavaScript

btoa js实现

2026-04-07 04:23:46JavaScript

Btoa 的 JavaScript 实现

btoa 是 JavaScript 中的一个内置函数,用于将二进制数据(通常是字符串)编码为 Base64 格式。以下是关于 btoa 的实现和使用方法:

基本用法

btoa 函数接受一个字符串作为参数,并返回该字符串的 Base64 编码结果。

btoa js实现

const encodedData = btoa('Hello, world!');
console.log(encodedData); // "SGVsbG8sIHdvcmxkIQ=="

处理 Unicode 字符

btoa 只能正确处理 ASCII 字符。如果字符串包含 Unicode 字符(如中文、表情符号等),需要先进行转码。

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

const encodedUnicode = utf8ToBase64('你好,世界!');
console.log(encodedUnicode); // "5L2g5aW977yM5LiW55WMhQ=="

解码 Base64

使用 atob 函数可以将 Base64 字符串解码为原始字符串。

btoa js实现

const decodedData = atob('SGVsbG8sIHdvcmxkIQ==');
console.log(decodedData); // "Hello, world!"

处理 Unicode 解码

如果 Base64 字符串包含 Unicode 字符,解码时需要额外处理。

function base64ToUtf8(str) {
  return decodeURIComponent(Array.prototype.map.call(atob(str), (c) => {
    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
  }).join(''));
}

const decodedUnicode = base64ToUtf8('5L2g5aW977yM5LiW55WMhQ==');
console.log(decodedUnicode); // "你好,世界!"

注意事项

  • btoaatob 是浏览器环境的内置函数,Node.js 中需要使用 Buffer 替代。
  • 非 ASCII 字符需要额外转码处理,否则会抛出错误。
  • Base64 编码会增加数据体积(约 33%),不适合编码大量数据。

Node.js 中的替代方案

在 Node.js 中,可以使用 Buffer 实现类似功能:

const encodedData = Buffer.from('Hello, world!').toString('base64');
console.log(encodedData); // "SGVsbG8sIHdvcmxkIQ=="

const decodedData = Buffer.from('SGVsbG8sIHdvcmxkIQ==', 'base64').toString();
console.log(decodedData); // "Hello, world!"

标签: btoajs
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…