base64 解决中文编码乱码问题
时间: 2023-07-27 19:23:07 浏览: 61
Base64 编码是一种将二进制数据转换为可读性较高的文本格式的编码方式。它通常用于在网络上传输数据或存储数据时使用。但是,如果 Base64 编码包含中文字符,解码后的结果可能会出现乱码。
解决这个问题的方法是先将中文字符进行编码,然后再进行 Base64 编码。在解码时,先将 Base64 编码解码为字符串,然后再将字符串进行解码。可以使用 encodeURIComponent() 和 decodeURIComponent() 方法来完成编码和解码的过程。
以下是一个示例代码:
```
// 编码
let str = "你好,世界!";
let base64Str = btoa(unescape(encodeURIComponent(str)));
console.log(base64Str); // 输出:JUU0JUJEJUEwJUU1JUEwJUU3JUExJTk=
// 解码
let decodedStr = decodeURIComponent(escape(atob(base64Str)));
console.log(decodedStr); // 输出:你好,世界!
```
在这个例子中,我们先使用 encodeURIComponent() 方法对中文字符串进行编码,然后使用 unescape() 方法将编码后的字符串转换为二进制数据,再使用 btoa() 方法进行 Base64 编码。在解码时,我们先使用 atob() 方法将 Base64 编码解码为字符串,然后使用 escape() 方法将字符串转换为二进制数据,最后使用 decodeURIComponent() 方法对二进制数据进行解码。最终得到的结果就是正确的中文字符串。