前端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 解码。

相关推荐
丢,捞仔9 小时前
uni-app上架应用添加权限提示框
前端·javascript·uni-app
Glink9 小时前
从零开始编写自己的AI账单Agent
前端·agent·ai编程
Hilaku9 小时前
我是如何用一行 JS 代码,让你的浏览器内存瞬间崩溃的?
前端·javascript·node.js
努力犯错玩AI9 小时前
如何在ComfyUI中使用Qwen-Image-Layered GGUF:完整安装和使用指南
前端·人工智能
Lefan9 小时前
在浏览器中运行大模型:基于 WebGPU 的本地 LLM 应用深度解析
前端
五仁火烧9 小时前
npm run build命令详解
前端·vue.js·npm·node.js
哈__9 小时前
React Native 鸿蒙跨平台开发:简易记事本 APP
javascript·react native·react.js
贺今宵9 小时前
electron-vue无网络环境,读取本地图片/文件展示在页面vue中protocol
前端·javascript·electron
IT_陈寒9 小时前
SpringBoot 3.x实战:5个高效开发技巧让我减少了40%重复代码
前端·人工智能·后端
noodles10249 小时前
iOS下怎么就找不到好用的新手引导组件呢?还是得自己动手
前端