# JavaScript对字符串进行Base64的编码与解码 以及中文乱码处理方法

> 在实例部分情景中，犹如我们需要对密码进行Base64编码或解码，一般情况下，我们会直接引用网上base64.js文件对其处理。现在我们直接可以使用WEB API提供的WindowBase64的两个函数对其处理，window.btoa()编码与window.atob()解码对其处理。

Author: DeathGhost
Published: 2018-08-05 14:45:27
Category: javascript
Canonical: https://www.deathghost.cn/article/javascript/30
Keywords: JavaScript, btoa编码, atob解码, 字符串编码, 字符串解码, base64中文乱码, base64加密, base64解密, base64字符串编码解码, 加密

你可以使用 window.btoa() 方法来编码一个可能在传输过程中出现问题的数据，并且在接受数据之后，使用 atob() 方法再将数据解码。

btoa() 从 String 对象中创建一个 base-64 编码的 ASCII 字符串，其中字符串中的每个字符都被视为一个二进制数据字节。

atob() 对经过 base-64 编码的字符串进行解码。

![JavaScript对字符串进行Base64的编码与解码 以及中文乱码处理方法](https://www.deathghost.cn/public/upload/article/2021/05/03/1620024094198418.jpg)

JavaScript对字符串进行Base64的编码与解码 以及中文乱码处理方法

## 编码语法

let encodedData = window.btoa("DeathGhost"); // 编码 输出: RGVhdGhHaG9zdA==

## 解码语法

let decodedData = window.atob('RGVhdGhHaG9zdA=='); // 解码 输出：DeathGhost
对于中文字符串进行编码解码时，我们需要对其做一定处理方可，否则乱码

let name = '新码笔记';
let encodedData = window.btoa(unescape(encodeURIComponent(name )));
// 输出：5paw56CB56yU6K6w
let decodedData = decodeURIComponent(escape(window.atob('5paw56CB56yU6K6w')))
// 解码输出：新码笔记
就简单写这么多，无意中看到这个方法，以前项目中用过这个方法，当时也没记录；最近站点刚重新建立起来，博客内容太少了，在这里也记录下来。

## Related

- Previous: [html5前端上传图片预览删除小实例 js图片base64预览操作](https://www.deathghost.cn/article/javascript/27)
- Next: [JS原生的深拷贝API structuredClone()](https://www.deathghost.cn/article/javascript/120)
