base64编码相关-btoa和atob及中文乱码报错问题
- 最近在做二进制编码相关的东西,关于Base64的编码解码问题。遇到了一些问题。
btoa();
- btoa函数全称就是Binary-to-ASCII,在js中用于Base64编码
let encodedData = window.btoa("WEBGL");
//V0VCR0w=
- 具体的写法如上所示,接收一个字符串, 其字符分别表示要编码为 ASCII 的二进制数据的单个字节。
- 返回一个 Base64 表示的字符串。
atob();
- atob函数全称就是ASCII-to-Binary,在js中用于Base64解码。具体用法如下所示
let encodedData = window.btoa("V0VCR0w=");
//WEBGL
- 参数为一个Base64表示的字符串,返回值为一个正常的字符串
存在的问题
- 当然在实际使用中是有问题的,最主要的问题就是*** 不能转换中文 ***,下面介绍解决方法:
encodeURIComponent();
- 这个函数是在uri中转义除了字母、数字、(、)、.、!、~、*、’、-和_之外的所有字符。示例如下:
console.log(btoa(encodeURIComponent("嘻嘻")));//JUU1JTk4JUJCJUU1JTk4JUJC
console.log(decodeURIComponent(atob("JUU1JTk4JUJCJUU1JTk4JUJC")));//嘻嘻