base64编码相关-btoa和atob及中文乱码报错问题

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")));//嘻嘻

你可能感兴趣的:(前端基础)