前端base-64 编码解码

javascript 复制代码
let arr = ['W29iamVjdCBPYmplY3Rd']
for (var key in arr) {
   var newObj = {
      src: arr[key],
      info: JSON.parse(decodeURIComponent(escape(window.atob(arr[key].replace(/-/g, "+").replace(/_/g, "/"))))).name 
   }
}

展示正常:

javascript 复制代码
JSON.parse(decodeURIComponent(escape(window.atob(arr[key].replace(/-/g, "+").replace(/_/g, "/"))))).name

偶发乱码:

javascript 复制代码
JSON.parse(decodeURIComponent(encodeURIComponent(window.atob(arr[key].replace(/-/g, "+").replace(/_/g, "/"))))).name

偶发原因:

当使用 atob() 解码后,JavaScript 不会把它当作 UTF-8 字符串,而当作每个字符代表一个字节的 Latin1(ISO-8859-1)字符串。

encodeURIComponent 会按 UTF-16 → UTF-8 进行双重编码,导致decodeURIComponent解码偶发失败。

escape 保留了原始字节,decodeURIComponent按 UTF-8 解码。

相关推荐
孟祥_成都34 分钟前
【全网最通俗!新手到AI全栈开发必读】 AI 是如何进化到大模型的
前端·人工智能·全栈
牛奶1 小时前
AI辅助开发的基础概念
前端·人工智能·ai编程
摸鱼的春哥1 小时前
Agent教程15:认识LangChain,Agent框架的王(上)
前端·javascript·后端
明月_清风2 小时前
自定义右键菜单:在项目里实现“选中文字即刻生成新提示”
前端·javascript
明月_清风2 小时前
告别后端转换:高质量批量导出实战
前端·javascript
刘发财7 小时前
弃用html2pdf.js,这个html转pdf方案能力是它的几十倍
前端·javascript·github
牛奶9 小时前
2026年大模型怎么选?前端人实用对比
前端·人工智能·ai编程
牛奶9 小时前
前端人为什么要学AI?
前端·人工智能·ai编程
Kagol12 小时前
🎉OpenTiny NEXT-SDK 重磅发布:四步把你的前端应用变成智能应用!
前端·开源·agent
GIS之路13 小时前
ArcGIS Pro 中的 notebook 初识
前端