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("")
  );
};

然后调用:

再看结果:完美

相关推荐
染翰19 分钟前
lua入门以及在Redis中的应用
开发语言·redis·lua
王者鳜錸29 分钟前
PYTHON让繁琐的工作自动化-函数
开发语言·python·自动化
JohnYan1 小时前
工作笔记 - CentOS7环境运行Bun应用
javascript·后端·容器
兔老大RabbitMQ1 小时前
git pull origin master失败
java·开发语言·git
tt5555555555551 小时前
C/C++嵌入式笔试核心考点精解
c语言·开发语言·c++
xiao助阵1 小时前
python实现梅尔频率倒谱系数(MFCC) 除了傅里叶变换和离散余弦变换
开发语言·python
科大饭桶2 小时前
C++入门自学Day14-- Stack和Queue的自实现(适配器)
c语言·开发语言·数据结构·c++·容器
扛麻袋的少年3 小时前
7.Kotlin的日期类
开发语言·微信·kotlin
东风西巷3 小时前
Rubick:基于Electron的开源桌面效率工具箱
前端·javascript·electron·软件需求
钢铁男儿3 小时前
Python 正则表达式实战:解析系统登录与进程信息
开发语言·python·正则表达式