文章目录
一、原生实现
- JavaScript 定义了两个与 Base64 相关的全局方法。
| 1. btoa():字符串或二进制值转为 Base64 编码。 |
| 2. atob():把 Base64 编码转为原来的字符。 |
复制
- 遇到中文编码需要先做一次 URI 组件编码或对解码后的内容进行 URI 解码
| 1. encodeURIComponent():结合 btoa 使用 |
| 2. decodeURIComponent():结合 atob 使用 |
复制
| |
| const str = 'test' |
| const encode = btoa(encodeURIComponent(str)) |
| console.log(encode) |
复制
| |
| const str = 'dGVzdA==' |
| const decode = decodeURIComponent(atob(str)) |
| console.log(decode) |
复制
| const Base64 = { |
| encode(str) { |
| |
| return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, |
| function toSolidBytes(match, p1) { |
| return String.fromCharCode(Number('0x' + p1)); |
| })); |
| }, |
| decode(str) { |
| |
| return decodeURIComponent(atob(str).split('').map(function (c) { |
| return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); |
| }).join('')); |
| } |
| } |
| let encoded = Base64.encode("一颗不甘坠落的流星"); |
| let decoded = Base64.decode(encoded); |
复制
二、插件实现
- 按照 Base64 插件:编解码:
js-base64
,判断是否是Base64编码格式:is-base64
| npm i js-base64 |
| npm i is-base64 |
复制
| import isBase64 from 'is-base64'; |
| import { Base64 } from 'js-base64'; |
| |
| |
| const base64ToStr = (base64Str: string): string => { |
| if (isBase64(base64Str)) { |
| return Base64.decode(base64Str); |
| } |
| return base64Str; |
| }; |
| |
| export const strToBase64 = (str: string): string => Base64.encode(str); |
| |
| console.log(strToBase64('一颗不甘坠落的流星')) |
| console.log(base64ToStr('5LiA6aKX5LiN55SY5Z2g6JC955qE5rWB5pif')) |
复制