解atob btoa中文乱码问题


  function utf8ToB64(str) {
    return window.btoa(unescape(encodeURIComponent(str)));
  }

  function b64ToUtf8(str) {
    return decodeURIComponent(escape(window.atob(str)));
  }

MDN 文档里的还是用 UTF-16 编码的,和服务端不能互相传输encodeURIComponent 其实作用是把内置的 UTF16 编码转成 UTF8 的百分号编码(传输需要),再利用 unescape 把百分号编码转成 ascii string这样就实现了内置 UTF16 编码转 UTF8 编码,虽然 JS 层面上展示的是乱码,但是编码格式已经对了,再进行 btoa 从编码层面是完全符合预期的。 —— 来自我的一位同fmfsaisai

Mark24

Everything can Mix.