📅  最后修改于: 2023-12-03 15:13:43.656000             🧑  作者: Mango
btoa()
方法用于将字符串转换为 base64 编码的字符串。
btoa(string)
参数:
string
: 必需,要进行 base64 编码的字符串。返回值:
const originalString = 'Hello, world!';
const encodedString = btoa(originalString);
console.log(encodedString); // "SGVsbG8sIHdvcmxkIQ=="
const decodedString = atob(encodedString);
console.log(decodedString); // "Hello, world!"
btoa()
方法只能将 ASCII 字符串转换为 base64 编码的字符串。如果输入字符串包含非 ASCII 字符,则必须首先将其转换为 ASCII 字符串,然后才能使用 btoa()
进行编码。const nonAsciiString = 'こんにちは、世界!';
const asciiString = unescape(encodeURIComponent(nonAsciiString));
console.log(asciiString); // "%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E4%B8%96%E7%95%8C%EF%BC%81"
const encodedAsciiString = btoa(asciiString);
console.log(encodedAsciiString); // "JTI1MjUyNTIlMjUyNTIxJTI1MjUyNTIlMjUyNTIxJTI1MjUyNTIlMjUyNTIxJTI1MjUyNTIlMjUyNTIxJTI1MjUyNTIlMjUyNTIxCg=="
btoa()
方法返回的结果是一个字符串,该字符串中可能包含 +
、/
和 =
等特殊字符。这些字符在某些上下文中可能会被解释为特殊含义,因此需要特别注意。通常情况下,我们会在使用 btoa()
方法之前将其输入字符串进行 URL 编码,以避免这种问题。同样地,在解码 base64 字符串时,也需要特别处理可能存在的特殊字符。const originalUrl = 'https://www.example.com/search?q=hello+world';
const encodedUrl = btoa(encodeURIComponent(originalUrl));
console.log(encodedUrl); // "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vc2VhcmNoP3E9aGVsbG8rd29ybGQ="
const decodedUrl = decodeURIComponent(atob(encodedUrl));
console.log(decodedUrl); // "https://www.example.com/search?q=hello+world"