如何在 JavaScript 中使用 Base64 编码和解码字符串

在本教程中,我们将学习如何将字符串编码为 Base64 编码格式。

Javascript 提供了一个名为 btoa()(二进制到 ASCII)的内置函数来执行 Base64 编码。

让我们看看如何使用 btoa() 函数对字符串进行编码:

let str = "Hello onitroad";
//对字符串编码
let encodedString = btoa(str);
console.log(encodedString); //SGVsbG8gb25pdHJvYWQ=

另外,请检查我们的 Base64 编码器工具。

默认的 btoa() 函数适用于由 8 位字节 (UTF-8) 组成的二进制数据。

但是, btoa() 函数接受一个字符串,其中每个字符代表一个 8 位字节。
如果一个字符串包含无法用 8 位表示的字符(例如 UTF16),它将被破坏。

要处理 Unicode 字符,首先需要将字符串转义为 8 位字节数组,然后使用 window.btoa() 函数编码为 Base64:

function base64EncodeUnicode(str) {
  //首先,使用 encodeURIComponent 对字符串进行转义以获得字符的 UTF-8 编码,
  //然后,我们将百分比编码转换为原始字节,并将其添加到 btoa() 函数中。
  utf8Bytes = encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {
    return String.fromCharCode('0x' + p1);
  });
  return btoa(utf8Bytes);
}
base64EncodeUnicode('Hello onitroad') //SGVsbG8gb25pdHJvYWQ=

有一个对应的函数 atob() 可以将 base64 编码转换为字符串。
atob() 函数返回一个字符串,其中每个字符代表一个 8 位字节,这意味着它的值将介于 0 和 0xff 之间。

let str = "Hello onitroad";
let enc = btoa(str);
console.log(enc); //输出: "SGVsbG8gb25pdHJvYWQ="
let dec = atob(enc);
console.log(dec); //输出: "Hello onitroad"

Base64 编码和解码

Base64 是一组二进制到文本编码方案,通过将 ASCII 字符串格式中的二进制数据转换为基数 64 表示来表示二进制数据。

Base64 是一种编码算法,允许将任何字符转换为由拉丁字母、数字、加号和斜线组成的字母表。
在 JavaScript 中,有两个函数用于解码和编码 base64 字符串:btoa() 用于从二进制数据字符串创建 base-64 编码的 ASCII 字符串和 atob(),用于解码 base64 编码的字符串。

日期:2020-06-02 22:16:17 来源:oir作者:oir