当前位置:首页 > JavaScript

btoa js实现

2026-03-15 10:54:13JavaScript

btoa 函数的作用

btoa 是 JavaScript 中的一个全局函数,用于将二进制字符串(通常是 ASCII 字符串)编码为 Base64 格式的字符串。Base64 是一种常见的编码方式,常用于在文本环境中传输或存储二进制数据。

基本语法

const encodedData = btoa(stringToEncode);
  • stringToEncode:需要编码的二进制字符串(仅支持 ASCII 字符)。
  • encodedData:返回 Base64 编码后的字符串。

使用示例

const originalString = 'Hello, World!';
const encodedString = btoa(originalString);
console.log(encodedString); // 输出 "SGVsbG8sIFdvcmxkIQ=="

处理非 ASCII 字符

btoa 仅支持 ASCII 字符,如果输入字符串包含 Unicode 字符(如中文、表情符号等),需要先将其转换为 UTF-8 编码的二进制字符串。可以使用 encodeURIComponentunescape 组合实现:

function utf8ToBase64(str) {
    return btoa(unescape(encodeURIComponent(str)));
}

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

解码 Base64 字符串

使用 atob 函数可以解码 Base64 字符串:

const decodedString = atob(encodedString);
console.log(decodedString); // 输出 "Hello, World!"

对于包含 Unicode 的字符串,解码时需要反向操作:

function base64ToUtf8(str) {
    return decodeURIComponent(escape(atob(str)));
}

const decodedUnicode = base64ToUtf8(encodedUnicode);
console.log(decodedUnicode); // 输出 "你好,世界!"

注意事项

  • btoaatob 是浏览器环境中的全局函数,Node.js 中不直接支持。在 Node.js 中可以使用 Buffer 实现类似功能:

    // Node.js 中的 Base64 编码
    const encoded = Buffer.from('Hello, World!', 'utf8').toString('base64');
    console.log(encoded); // 输出 "SGVsbG8sIFdvcmxkIQ=="
    
    // Node.js 中的 Base64 解码
    const decoded = Buffer.from(encoded, 'base64').toString('utf8');
    console.log(decoded); // 输出 "Hello, World!"
  • 如果输入字符串包含非 ASCII 字符且未正确处理,btoa 会抛出错误。

    btoa js实现

标签: btoajs
分享给朋友:

相关文章

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

原生js实现轮播图

原生js实现轮播图

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

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…