js对中文进行base64编码和解码操作,解决中文乱码问题

我使用github api的接口获取文件内容,然后使用atob进行解码,但是发现:乱码.......糟心啊

所以就有了我封装的方法:

javascript 复制代码
export const encode64 = (str) => {
  // 首先,我们使用 encodeURIComponent 来获得百分比编码的UTF-8,然后我们将百分比编码转换为原始字节,最后存储到btoa里面
  return btoa(
    encodeURIComponent(str).replace(
      /%([0-9A-F]{2})/g,
      function toSolidBytes(_, p1) {
        return String.fromCharCode(Number("0x" + p1));
      }
    )
  );
};

export const decode64 = (str) => {
  // 过程:从字节流到百分比编码,再到原始字符串
  return decodeURIComponent(
    atob(str)
      .split("")
      .map(function (c) {
        return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
      })
      .join("")
  );
};

然后调用:

再看结果:完美

相关推荐
栀秋66610 分钟前
深入浅出链表操作:从Dummy节点到快慢指针的实战精要
前端·javascript·算法
serendipity_hky12 分钟前
【go语言 | 第2篇】Go变量声明 + 常用数据类型的使用
开发语言·后端·golang
青青很轻_28 分钟前
Vue自定义拖拽指令架构解析:从零到一实现元素自由拖拽
前端·javascript·vue.js
xhxxx28 分钟前
从被追问到被点赞:我靠“哨兵+快慢指针”展示了面试官真正想看的代码思维
javascript·算法·面试
报错小能手31 分钟前
STL_unordered_map
开发语言·c++·哈希算法
树下水月34 分钟前
纯HTML 调用摄像头 获取拍照后的图片的base64
前端·javascript·html
蜗牛攻城狮38 分钟前
Vue 中 `scoped` 样式的实现原理详解
前端·javascript·vue.js
豆苗学前端44 分钟前
前端工程化终极指南(Webpack + Gulp + Vite + 实战项目)
前端·javascript
比老马还六44 分钟前
Bipes项目二次开发/海龟编程(六)
前端·javascript
CreasyChan1 小时前
C#特性(Attributes)详解
开发语言·c#