Mark24
记录灵感、技术、思考
解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