深入解析window.btoa()与atob():Base64编码解码的实战应用

window属性:btoa()和atob() btoa()函数用于将二进制数据(通常是字符串)转换为 Base64 编码的字符串。返回 Base64 编码的字符串。 阅读详情

1. 从零认识:Base64与浏览器里的“翻译官”

大家好,我是老张,在Web开发这个行当里摸爬滚打了十几年,处理过各种稀奇古怪的数据转换问题。今天想和大家聊聊两个看似简单,但用好了能解决大问题的浏览器原生函数:window.btoa() 和 window.atob()。很多刚入门的朋友一看到“编码解码”就觉得头大,其实你可以把它们想象成浏览器自带的“翻译官”。这个“翻译官”的专长,就是把那些计算机底层喜欢的二进制“暗语”,翻译成我们人类和网络协议都能看懂的“明文”——也就是Base64编码的字符串。

那么,Base64到底是什么呢?我打个比方。假设你有一份纯手写的机密文件(二进制数据),需要传真给另一个城市的朋友。但老式传真机只能传输印刷体的英文和数字(ASCII字符)。怎么办?你就需要一位专业的“誊写员”,把这份手写文件的内容,按照一套固定的规则,转写成由A-Z、a-z、0-9、+、/这64个字符组成的“电报码”。这个过程就是Base64编码。接收方拿到“电报码”后,再用同样的规则反向翻译,就能还原出手写文件的原貌。btoa()就是这个“编码誊写员”,而atob()就是那位“解码翻译官”。

为什么需要这个“翻译”过程?核心原因在于“兼容性”。早期很多网络协议、数据存储系统(比如电子邮件、URL、HTML、CSS)都是为纯文本设计的,它们处理不了原始的二进制数据,比如一张图片的0和1直接扔过去,系统可能就懵了,会把它当成控制字符或者乱码。Base64编码的作用,就是把所有二进制数据“伪装”成安全、通用的文本字符,确保数据在传输和存储过程中“毫发无损”。在Web开发里,这个需求无处不在:把小图标直接内嵌在CSS或HTML里减少HTTP请求、将用户上传的图片暂存为字符串、在URL中安全传递简单的二进制参数等等。接下来,我们就看看浏览器自带的这两位“翻译官”怎么用。

2. 核心函数详解:btoa()与atob()的实战手册

2.1 btoa():把你的数据“编码”成通用文本

btoa()这个名字是“binary to ASCII”的缩写,顾名思义,就是把二进制数据转换成ASCII字符串。在JavaScript里,我们最常用来处理的就是普通的文本字符串。它的用法直接得不能再直接了:

// 基础用法:编码一个普通字符串
const originalText = "Hello, Frontend!";
const encodedText = window.btoa(originalText); // 也可以省略window,直接btoa()
console.log(encodedText); // 输出:SGVsbG8sIEZyb250ZW5kIQ==

你看,一句btoa(“Hello, Frontend!”),原来的字符串就变成了SGVsbG8sIEZyb250ZW5kIQ==这一串看起来有点乱的字符。注意末尾的==,这是Base64编码的填充符,为了保证编码后的字符串长度是4的倍数。你可能会问,编码后的字符串变长了,是不是效率低了?没错,Base64编码会让数据体积膨胀大约33%。所以它并不是为了压缩,而是为了“安全地表达”。这个代价在大多数处理小数据量的Web场景下是可以接受的。

但这里有一个新手必踩的大坑:btoa()不能直接处理非ASCII字符,比如中文、emoji。如果你直接btoa(“你好”),浏览器会立刻抛出一个错误:The string to be encoded contains characters outside of the Latin1 range.。这是因为btoa()期望输入是“二进制字符串”,每个字符的码点必须在0到255之间。对于中文这样的Unicode字符,我们需要一个预处理步骤。我常用的、也是最稳妥的方法是结合encodeURIComponent:

// 正确处理包含中文等Unicode字符的字符串
function safeBtoa(str) {
  // 先用encodeURIComponent将Unicode字符转义为UTF-8编码的百分比字符串
  // 例如“你好”会变成“%E4%BD%A0%E5%A5%BD”
  // 然后btoa对这个百分比字符串进行Base64编码
  return window.btoa(encodeURIComponent(str));
}

const chineseText = "你好,世界!";
const safeEncoded = safeBtoa(chineseText);
console.log(safeEncoded); // 输出:JUU0JUJEJUEwJUU1JUE1JUIzJUU0JUI4JThCJUU3JTk1JThDJUU0JUJBJTg2

对应的,解码时也需要用decodeURIComponent来还原。这个方法我用了很多年,在各种浏览器和环境下都非常稳定。当然,现在你也可以用TextEncoderAPI来生成UTF-8的Uint8Array再进行编码,但encodeURIComponent的方案兼容性更好,代码也更简洁。

2.2 atob():将Base64字符串“解码”回原始数据

有编码就有解码,atob()就是btoa()的逆过程,它是“ASCII to binary”的缩写。它的任务是把那串Base64“电报码”翻译回原始的二进制字符串形式。用法同样简单:

// 基础解码
const encodedData = "SGVsbG8sIEZyb250ZW5kIQ==";
const decodedData = window.atob(encodedData);
console.log(decodedData); // 输出:Hello, Frontend!

对于我们用safeBtoa(结合了encodeURIComponent)编码的字符串,解码也需要配对操作:

function safeAtob(encodedStr) {
  // 先atob解码得到百分比字符串,再用decodeURIComponent还原Unicode
  return decodeURIComponent(window.atob(encodedStr));
}

const restoredText = safeAtob("JUU0JUJEJUEwJUU1JUE1JUIzJUU0JUI4JThCJUU3JTk1JThDJUU0JUJBJTg2");
console.log(restoredText); // 输出:你好,世界!

这里要特别注意:atob()解码后返回的是一个“二进制字符串”。如果原始数据是文本(比如“Hello”),那这个二进制字符串看起来就是文本。但如果原始数据是一个图片文件,解码后得到的是一堆乱码的二进制字符串,你需要进一步处理(比如转成ArrayBuffer或Blob)才能使用。我们会在图片处理的章节详细讲。另外,如果传入的字符串不是有效的Base64格式(比如包含非64字符集的字母,或者填充符=的位置不对),atob()会抛出错误。在实际项目中,对输入进行校验或使用try...catch包裹是个好习惯。

3. 核心应用场景:让数据流动起来

知道了怎么用,接下来就得看看用在哪。Base64编码在Web开发里可不是摆设,它解决的都是实实在在的“交通”问题。

3.1 场景一:Data URL —— 将资源“内嵌”到文档中

这是Base64最经典的应用之一,你可能已经在不知不觉中用过了。Data URL允许你将图片、字体甚至小段脚本直接内嵌在HTML、CSS或JavaScript里,格式是data:[MIME类型];base64,[编码后的数据]。这样做最大的好处是减少HTTP请求。对于网站logo、小图标这些体积不大但每个页面都要用到的资源,内嵌后页面加载速度会有可感知的提升,因为浏览器不需要再发起一个额外的网络请求。

/* 在CSS中内嵌一个微小的PNG图标作为背景 */
.icon {
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==');
  width: 16px;
  height: 16px;
}

在JavaScript里动态生成图片也很方便:

// 假设有一个从后端API获取的Base64图片字符串
const base64StrFromAPI = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4...'; // 省略
const imgElement = document.createElement('img');
imgElement.src = `data:image/jpeg;base64,${base64StrFromAPI}`;
document.body.appendChild(imgElement);

不过,我在这里要给你提个醒:不要滥用Data URL。因为Base64编码会让文件体积增大,而且内嵌的资源无法被浏览器单独缓存。如果一个几十KB的图片被编码后放在CSS里,用户每次访问页面都要重新下载这段编码,即使图片本身没变。我的经验法则是:只内嵌1-2KB以下的、确实需要和页面主体同时呈现的微小资源。

3.2 场景二:简易的数据传输与存储

在一些轻量级的场景下,Base64编码可以作为数据交换的“中间格式”。比如,你想在URL的查询参数里传递一点简单的二进制信息,直接放二进制不行,但放Base64字符串就很安全。

// 编码一段信息,放入URL
const config = JSON.stringify({ theme: 'dark', notify: true });
const encodedConfig = btoa(config); // 注意:这里config不含非ASCII字符,所以可以直接btoa
const shareUrl = `https://example.com/setup?prefs=${encodedConfig}`;
console.log(shareUrl); // 类似:https://example.com/setup?prefs=eyJ0aGVtZSI6ImRhcmsiLCJub3RpZnkiOnRydWV9

// 在接收页面解码
const urlParams = new URLSearchParams(window.location.search);
const encodedPrefs = urlParams.get('prefs');
if (encodedPrefs) {
  const decodedStr = atob(encodedPrefs);
  const userPrefs = JSON.parse(decodedStr);
  console.log(userPrefs); // { theme: 'dark', notify: true }
}

再比如,使用localStorage或sessionStorage存储数据时,它们只能存字符串。如果你想存一个复杂对象,除了用JSON.stringify,有时也需要Base64。特别是当对象里包含一些特殊字符时,先Base64编码再存储,可以避免一些潜在的解析问题。不过,这属于比较进阶的用法,一般情况下JSON.stringify已经足够。

3.3 场景三:处理用户上传的图片预览

这是前端开发中非常高频的需求:用户选择图片后,立即在页面上显示预览图,而不是等上传到服务器后再拉回来。FileReader API 结合 btoa() 是实现这个功能的经典组合拳。但这里有个常见的误解,原始文章里的例子其实可以更优化。我们一步步来看:

<input type="file" id="avatarUpload" accept="image/*" />
<img id="preview" src="" alt="预览" style="max-width: 300px;" />

<script>
document.getElementById('avatarUpload').addEventListener('change', function(event) {
  const file = event.target.files[0];
  if (!file || !file.type.startsWith('image/')) {
    return;
  }

  const reader = new FileReader();
  
  reader.onload = function(e) {
    // 注意!e.target.result 本身已经是一个Data URL了,格式是 "data:image/png;base64,XXXXX"
    // 它已经包含了Base64编码的部分,我们不需要再用btoa去编码一次!
    const dataURL = e.target.result;
    
    // 直接把这个Data URL赋值给img的src即可
    document.getElementById('preview').src = dataURL;
    
    // 如果你确实只需要纯Base64字符串部分(比如要发给后端),可以这样提取:
    const base64Data = dataURL.split(',')[1];
    console.log('纯Base64数据长度:', base64Data.length);
    // 这个base64Data已经是Base64字符串,无需再用btoa处理。
    // 验证:atob(base64Data) 会得到二进制字符串。
  };
  
  // 关键在这里:readAsDataURL 方法会自动完成文件读取和Base64编码
  reader.readAsDataURL(file);
});
</script>

所以,在这个场景里,btoa()并不是必须的,因为FileReader.readAsDataURL()已经帮我们完成了从二进制文件到Base64 Data URL的全部转换工作。真正需要手动使用btoa()和atob()的,是当你已经有了二进制数据(比如ArrayBuffer)或者纯Base64字符串,需要相互转换的时候。理解这一点,能让你少写很多冗余代码。

4. 进阶实战:手动处理图片数据的编码与解码

虽然FileReader很方便,但理解手动处理的过程能让你更深入地掌握数据流转。假设我们现在有一个图片文件的ArrayBuffer,或者从网络拿到一个纯Base64字符串,需要手动操作。

4.1 将二进制数据(如ArrayBuffer)编码为Base64

有时候,你可能会通过fetch API或者XMLHttpRequest以arrayBuffer()格式获取一张图片,然后需要把它转换成Base64用在页面上。这时就需要手动编码。

// 假设我们从某个API获取了一个图片的ArrayBuffer
async function fetchAndConvertToBase64(url) {
  try {
    const response = await fetch(url);
    const arrayBuffer = await response.arrayBuffer();
    
    // 关键步骤:将ArrayBuffer转换为二进制字符串
    const bytes = new Uint8Array(arrayBuffer);
    let binaryString = '';
    for (let i = 0; i < bytes.byteLength; i++) {
      binaryString += String.fromCharCode(bytes[i]);
    }
    
    // 使用btoa对二进制字符串进行Base64编码
    const base64Flag = 'data:image/jpeg;base64,';
    const imageBase64 = base64Flag + window.btoa(binaryString);
    
    return imageBase64;
  } catch (error) {
    console.error('转换失败:', error);
    return null;
  }
}

// 使用
// const dataUrl = await fetchAndConvertToBase64('/api/getImage');
// if (dataUrl) { imgElement.src = dataUrl; }

这个过程揭示了Base64编码的本质:它是对二进制字符串进行编码。String.fromCharCode把每个字节(0-255)转换成对应的Latin-1字符,拼接成一个长的二进制字符串,btoa再把这个长字符串翻译成Base64码。

4.2 将Base64字符串解码并还原为图片文件

反向操作也很有用。比如你从后端或localStorage拿到一个纯Base64字符串(没有data:image/...前缀),需要让它能在<img>标签里显示,或者还原成一个File对象供上传。

function base64ToImageElement(base64String, mimeType = 'image/png') {
  // 直接构造Data URL
  const dataURL = `data:${mimeType};base64,${base64String}`;
  const img = new Image();
  img.src = dataURL;
  return img; // 返回一个Image对象,可以添加到DOM中
}

// 更复杂一点:将Base64字符串转换回Blob或File对象
function base64ToBlob(base64String, mimeType = 'image/png') {
  // 1. 使用atob解码Base64,得到二进制字符串
  const binaryString = window.atob(base64String);
  const len = binaryString.length;
  
  // 2. 将二进制字符串转换为Uint8Array
  const bytes = new Uint8Array(len);
  for (let i = 0; i < len; i++) {
    bytes[i] = binaryString.charCodeAt(i);
  }
  
  // 3. 用Uint8Array创建Blob对象
  return new Blob([bytes], { type: mimeType });
}

// 使用示例
const pureBase64Str = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';

// 方式一:直接显示
const imgEl = base64ToImageElement(pureBase64Str);
document.body.appendChild(imgEl);

// 方式二:转换成File对象,模拟一个文件输入
const blob = base64ToBlob(pureBase64Str, 'image/png');
const file = new File([blob], 'restored-image.png', { type: 'image/png' });
console.log(file); // 现在这个file对象可以像普通文件一样被FormData使用,用于上传

手动处理的过程虽然步骤多一点,但它给了你完全的控制权。比如在解码时,你可以选择将二进制字符串转换成ArrayBuffer、Blob、File等不同格式,以适应后续不同的API(比如Canvas操作、WebSocket发送二进制帧、IndexedDB存储等)。

5. 避坑指南与性能考量

用了这么多年,我踩过的坑也不少。这里总结几个关键点,希望能帮你绕开弯路。

第一个大坑:字符编码问题。前面提过,btoa对非Latin1字符会报错。解决方案除了用encodeURIComponent,在现代浏览器中还可以用TextEncoder:

function utf8ToBase64(str) {
  const encoder = new TextEncoder();
  const data = encoder.encode(str); // 返回Uint8Array
  let binary = '';
  for (let i = 0; i < data.length; i++) {
    binary += String.fromCharCode(data[i]);
  }
  return window.btoa(binary);
}

对应的解码要用TextDecoder。这个方案更符合标准,但务必做好兼容性检查。

第二个坑:数据体积与内存。Base64编码会让数据增大约33%。处理大文件(比如几十MB的视频)时,千万不要试图用btoa把整个文件读成字符串,这会导致内存暴涨,页面卡死甚至崩溃。正确的做法是使用FileReader的readAsArrayBuffer,或者用fetch的流式API,分片处理数据,或者直接上传二进制流,压根不走Base64。

第三个坑:URL安全。标准的Base64编码包含+、/和=,这些字符在URL中有特殊含义。如果要把Base64字符串放在URL路径或参数里,需要先进行“URL安全”处理,通常是把+换成-,/换成_,并去掉填充符=。很多后端库(如Node.js的Buffer)有base64url选项。前端可以手动替换:

function toUrlSafe(base64Str) {
  return base64Str.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

function fromUrlSafe(urlSafeStr) {
  let str = urlSafeStr.replace(/-/g, '+').replace(/_/g, '/');
  // 补上可能缺失的等号
  while (str.length % 4) {
    str += '=';
  }
  return str;
}

关于性能,对于小字符串(几KB以内),btoa和atob的性能完全不用担心,它们是浏览器原生实现,速度极快。但当数据量达到MB级别时,频繁的字符串拼接和编码解码操作就会成为瓶颈。这时就需要评估是否真的有必要使用Base64。很多时候,直接使用Blob、ArrayBuffer和二进制API(如fetch的body)是更高效的选择。

最后,虽然btoa和atob非常方便,但也要知道它们不是JavaScript语言标准,而是Web API。这意味着在Node.js环境或某些非浏览器JavaScript运行时(如Web Worker中某些严格模式)下,它们可能不存在。在Node.js中,你需要使用Buffer.from(str, 'base64')和buf.toString('base64')来完成同样的工作。了解这一点,能让你写出环境兼容性更好的代码。

WHAT - JavaScript 的 atob 和 btoa 方法(含TextEncoder、TextDecoder、Nodejs Buffer) 方法方向输入输出注意事项btoa()编码ASCII 字符串Base64 字符串不支持中文atob()解码Base64 字符串ASCII 字符串不支持中文自定义 encode/decode编码/解码任意 Unicode 字符Base64 字符串✅ 支持中文Node.jsBuffer编码/解码任意文本或二进制Base64 字符串✅ 支持通用场景。 阅读详情

相关推荐

AMBA总线—APB总线协议详解

文章目录一、APB总线介绍1.1.什么是APB总线1.2.典型的基于 AMBA 总线的系统架构1.3.APB信号列表(重点)二、APB总线传输(时序)2.1.APB 状态机2.2.写操作(重要)2.3.读操作(重要)2.4.APB组件接口(重要)2.4.1.APB Bridge框图2.4.2.APB Slave框图三、APB到AHB的接口3.1.读操作3.2.写操作3.3.读写交替传送 一、APB...

Mr.翟的博客 4万+

JS学习笔记——window对象的函数btoa和atob

的点点滴滴

MRlaochen的博客 2万+

VisionMaster -Group循环、数组数据格式化

这里创建一个格式化工具,按照自己想要的模式格式化刚刚输出的数据。因为是检测多个物体,所以这里选择输出的是数组。第一次的模板很不满意,反复调整参数也没好,边缘不整齐,强迫症患者受不了。实测如果输入设置太多,会导致模块失效,所以尽量选择需要的少量参数。这里要打开循环使能,循环数值就是高精度匹配的匹配个数。Group输出设置里选择刚刚建立的数据集。左边是主流程,右边是组合模块内部流程。修改采图这里的曝光值,图像提亮一点。建一个数据集,把想要的数据收集起来。用TCP助手测试一下OK。成功得到了想要的数据。

weixin_69505365的博客 4533

前端-传参安全处理window.btoa base64加密,线性对称加密

前端参数传输安全的必要性 我们在任何场合都不应该直接或间接的暴露用户信息,或核心参数指标在浏览器上即是做不到无法查看也应做基本的加密处理放置恶意攻击或信息泄露 那么如何保证自己前端简单又便捷的生成加密参数呢 1.我们可以使用window.btoa() window对象自带的一个base64加密规则实现 前提参数需要时独立的string。 解密方式 是将加密后的文本使用window.atob(Str) 注意Str: 必需是一个通过 btoa() 方法编码的字符串。 代码中我们可以这样使用 /*

qq_873366938的博客 2934

SAP中错记虚拟利润中心的调整,冲销处理实例

我非CO专业顾问。工作中遇到的问题,也会找资料,分析,测试。有时这个过程会拿到结果,解决问题。遂将过程记录下来备查。读者请谨慎参考!EC-PCA: 利润中心记账流程_9ke0-优快云博客。

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 1799

2篇5章1节:实验流行病学的核心特征和设计原则

本文系统阐释实验流行病学的核心定义、四大核心特征、四大基本原则及主流设计类型,结合骨科、肿瘤科、儿科、精神科、内外妇儿及公共卫生等多学科临床实践案例,具象化解读人为干预、随机分组、平行对照、前瞻性设计的核心内涵与应用价值。同时,规范梳理对照、随机、盲法、重复四大研究基本原则,详细介绍临床试验、现场试验、社区试验三类主流研究设计的适配场景与应用差异。

MD Code 179

atob、btoa 和 encodeURIComponent

等)进行正确的转义或编码,导致 URL 被错误解析,进而导致参数丢失或数据不正确。,可以确保数据在 URL 中传输时的完整性和安全性,避免被错误解析或丢失。URL 可能被破坏的情况是由于未对特殊字符(如。在前后端数据传输过程中,

mx_2022的博客 2862

利用SIMULINK搭建一个16QAM调制解调收发系统

1发送模块设计 根据前面介绍的理论知识,我们可以知道16QAM的基本结构,首先我来设计QAM发送段的SIMULINK仿真模块。 图1 16QAM的发送端模块 他的基本工作流程为:将信号通过两路升余弦滤波器,得到滤波以后的信号,滤波器的作用就是为了防止码间干扰。然后将滤波以后的信号和SIN,COS相乘得到调制信号,将调制 下面一一介绍每个模块的具体参数设置以及各个部分信号的波形图。 图2 产生随机数据的信号源 第一部分信号是产生一组随机的数字,作为信源,第二个模块将信号...

FPGA/MATLAB学习教程/源码/项目合作开发 4776

window.atob()与window.btoa()方法实现编码与解码

首先, 为什么要编码? 由于一些网络通讯协议的限制, 又或者是出于信息加密的目的, 我们就需要将原信息转换为 base64 编码,然后才能进行传输.例如,发送某些含有 ASCII 码表中 0 到 31 之间的控制字符的数据。 通常的方法是通过window.btoa()方法对源数据进行编码, 然后接收方使用window.atob()方法对其进行解码, 从而得到原数据. window.btoa 与 window.atob 不支持中文 但是这种方法存在的问题是:window.bto...

laiyuan999的博客 4205

JavaFX Stage

JavaFXStagejavafx.stage.Stage表示 JavaFX 桌面应用程序中的窗口。在 JavaFX 内部,Stage您可以插入一个 JavaFX Scene,它表示在窗口内显示的内容 - 在Stage.当 JavaFX 应用程序启动时,它会创建一个根Stage对象,该对象将传递给 start(Stage primaryStage)JavaFX 应用程序的根类的方法。此Stage 对象代表 JavaFX 应用程序的主窗口。

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 508

基于Flink的流式数据降维实现方案

理解为何实时场景需要降维(解决维度灾难)掌握Flink流处理与降维算法的结合方式学会用Flink实现一个可落地的流式降维系统覆盖内容包括:Flink流处理基础、降维算法选择(侧重在线算法)、Flink与降维的集成方案、实战代码示例,以及工业级场景的应用经验。本文从“为什么需要流式降维”出发,用“快递分拣”的生活案例引出核心概念;接着拆解Flink流处理、数据降维的底层逻辑;然后重点讲解“在线PCA”这一适合流式场景的降维算法,并用Flink实现一个完整的流式降维管道;

AI 领航者的博客 568

JavaScript中window对象的函数btoa和atob

前言 atob和btoa是window对象的两个函数,用来编码解码Base64。 有关Base64的编码解码规则可参考我的博客:js实现基于Base64的编码及解码 btoa binary to ascii,用于将binary数据用ascii码表示。常用于编码字符串。 var str = &amp;quot;This is a string&amp;quot;; var encoded_str = btoa(str); consol...

xiaoxu的博客 9057

30天入门 SAP BTP 开发系列之一:SAP 开发顾问为什么要学习 SAP BTP 开发?能带来哪些收获?

国内 SAP 开发顾问们的微信朋友圈,最近可能都被 SAP 和阿里这两家巨头宣布合作的重磅消息刷屏了吧。近日,德国软件巨头SAP SE与中国电商巨头阿里巴巴集团宣布建立战略合作伙伴关系。根据协议,阿里巴巴集团将利用 SAP Cloud ERP Private 强化企业基础设施,并采用联合上市策略为全球客户创造卓越价值。阿里巴巴将集成 SAP Business Suite,以简化系统维护与升级流程,并实现 AI 功能与核心业务流程的无缝整合。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2391

btoa java,JavaScript用btoa和atob来编码解码Base64

btoa和atob是window对象的两个函数,其中btoa是binary to ascii,用于将binary的数据用ascii码表示,即Base64的编码过程,而atob则是ascii to binary,用于将ascii码解析成binary数据,看一个例子:// Define the stringvar string = 'Hello World!';// Encode the String...

weixin_33304092的博客 1591

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

javascript中的window.btoa与window.atob的简单加解密

WindowOrWorkerGlobalScope.btoa()从String对象中创建一个 base-64 编码的 ASCII 字符串,其中字符串中的每个字符都被视为一个二进制数据字节。 Note: 由于这个函数将每个字符视为二进制数据的字节,而不管实际组成字符的字节数是多少,所以如果任何字符的码位超出 0x00 ~ 0xFF 范围,则会引发InvalidCharacterEr...

txl910514的专栏 2499

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JavaScript用btoa和atob来编码解码Base64

原文地址:https://my.oschina.net/itblog/blog/1613977 btoa和atob是window对象的两个函数,其中btoa是binary to ascii,用于将binary的数据用ascii码表示,即Base64的编码过程,而atob则是ascii to binary,用于将ascii码解析成binary数据,看一个例子: // Define the st...

sydjcwx 689

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

前端将base64图片转换成file文件

首先利用split()方法对base64进行分割,将前缀文件信息,与文件内容分隔开。然后从前缀中获取到文件的类型信息以及具体的格式后缀。再然后借助window.atob()方法对base64文件数据进行解码,接着利用Uint8Array(length)和charCodeAt(index),对接码后的数据进行处理。最后通过File(bits, name, options)构造函数,传入对应的参数创建一个新的file对象。

weixin_45092437的博客 1万+

Base64编码实战:用window.btoa()和atob()实现图片与字符串的转换

本文详细介绍了如何利用浏览器原生API `window.btoa()` 和 `window.atob()` 在前端实现图片与Base64字符串的高效互转。通过实战案例,解析了从图片上传预览、Base64编码、到字符串还原为图片或Blob对象的完整流程,并提供了性能优化与安全考量,是处理Web端图片数据转换的实用指南。

time3的博客 336

Javascript 自带简单解密算法Base64,window.btoa和window.atob使用详解

介绍 window.atob( String ) 将一个字符串编码为一个Base64字符串。 window.btoa( String ) 解码一个Base64字符串。 用法 只有字符串才能被转换,支持转换 ASCII字母和数字,但不支持中文! 基本用法 // 转base64 var a= btoa("abcde"); // 转码结果 "YWJjZGU=" ...

年少無知,稳步前行。 1904

Js对字符串进行base64编码和解码,中文报错:Failed to execute ‘btoa‘ on ‘Window‘: The string to be encoded contains cha

刚才上面的例子中我们想对Unicode字符编码进行编码,直接使用btoa不行的,所以我们使用encodeURIComponent和decodeURIComponent方法。btoa :是binary to ascii,用于将binary的数据用ascii码表示,即Base64的编码过程。编码的过程:Unicode字符 -------> 先encodeURI -------> 再btoa编码。解码的过程:先atob解码 -------> 再decodeURI -------> Unicode字符。

1万+

base64解码_JS逆向 | 原来,大家对于atob和btoa都有误解?不止base64这么简单!

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!引言 故事是这样的,有位读者朋友需要模拟登录一个网站: aHR0cDovL3d3dy56bGRzai5jb20v我进去一看,很简单啊,不就是RSA加密么? 一顿操作猛如虎,把涉及RSA的全部扣下来,然后用Python的base64.b64encode代替 btoa 函数调用即可(由于这里的RSA加密为NoPaddi...

weixin_39596668的博客 679

用 JS 进行 Base64 编码、解码

从IE10+浏览器开始,所有浏览器就原生提供了 Base64 编码、解码方法,不仅可以用于浏览器环境,Service Worker 环境也可以使用。 方法名就是 atob 和 btoa ,具体语法如下: window.btoa("qinyandetiankong") // 编码 "cWlueWFuZGV0aWFua29uZw==" window.atob("cWlueWFuZGV0aWFua29uZw==") // 解码 "qinyandetiankong" IE8/IE9的 polyfill .

青颜的天空的博客 1841

javascript 使用btoa和atob来进行Base64转码和解码

老是记不住这两个函数,干脆写下来,比较好翻。 avascript原生的api本来就支持,Base64,但是由于之前的javascript局限性,导致Base64基本中看不中用。当前html5标准正式化之际,Base64将有较大的转型空间,对于Html5 Api中出现的如FileReader Api, 拖拽上传,甚至是Canvas,Video截图都可以实现。 好了,前言说了...

aixuan9365的博客 171

js基础 -- window.btoa和window.atob使用详解.md

欢迎访问我的个人博客:http://www.xiaolongwu.cn 定义 atob() 解码一个Base64字符串。 btoa() 从一个字符串或者二进制数据编码一个Base64字符串。 用法 只有字符串才能被转换 默认转换 ASCII字母和数字,不支持中文 // 转base64 var aa = btoa(&quot;dddddddd&quot;); // 转码结果 &quot;ZGRkZGRkZGQ=&quot; //...

积少成多 4178

用js实现基于Base64的数据或者图片的编码与解码

背景: 公司需要对接第三方的合作商,需要跳转至对方的网站,使用get请求访问对方链接直接跳转,get请求会直接暴露登陆的用户名和密码,我们采用base64编码,对用户信息进行保护。 常用的base64转换,有三种方法:①使用第三方插件(或者,他人写好的编码和解码);②游览器就原生提供的base64编码与解码的方法;③node中自带的base64编码与解码的方法。 一、js实现基于base64的编码与解码 1.使用第三方插件 推荐两个第三方的开源插件,引用到项目中就可以直接使用: ①使用jquery的base

qq_26780317的博客 5272

解决 Javascript 中 atob 方法解码中文字符乱码问题

转载地址:http://blog.sqrtthree.com/2015/08/29/utf8-to-b64/ 首先, 为什么要编码? 由于一些网络通讯协议的限制, 又或者是出于信息加密的目的, 我们就需要将原信息转换为 base64 编码,然后才能进行传输.例如,发送某些含有 ASCII 码表中 0 到 31 之间的控制字符的数据。 通常的方法是通过 window.bto

abxn2002的专栏 2万+
上一篇: 拖拉机上的‘对话规则‘:图解ISO-11783协议消息分包与合并机制
下一篇: 从行到页:CASIA-HWDB2.x离线数据集的行级bbox标注与page生成实践
pluto
博客等级 码龄25年 46粉丝 1562原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值