Base64 是一种常见的编码格式,用于将二进制数据转换为文本字符串,以便在基于文本的协议(如HTTP)中传输。Base64 编码并不是加密,而是一种编码方式,它允许将任意二进制数据表示为ASCII字符串。
Base64 编码使用64个字符来表示二进制数据。这些字符包括大写字母(A-Z)、小写字母(a-z)、数字(0-9)以及符号(+和/)。有时为了使编码后的字符串长度是4的倍数,会在末尾添加一个或两个等号(=)作为填充。
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
字符集。-
和_
代替+
和/
,并且通常省略末尾的=
。在JavaScript中,可以使用内置的btoa()
和atob()
函数进行Base64编码和解码。
let originalText = "Hello, World!";
let encodedText = btoa(originalText);
console.log(encodedText); // 输出: "SGVsbG8sIFdvcmxkIQ=="
let encodedText = "SGVsbG8sIFdvcmxkIQ==";
let decodedText = atob(encodedText);
console.log(decodedText); // 输出: "Hello, World!"
当原始文本中包含Base64字符集中的字符(如+
, /
, =
)时,直接编码可能会导致问题。
解决方法:
function urlSafeBase64Encode(str) {
return btoa(str).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}
function urlSafeBase64Decode(str) {
str += Array(5 - str.length % 4).join('=');
return atob(str.replace(/-/g, '+').replace(/_/g, '/'));
}
let originalText = "Hello, World!+/=";
let encodedText = urlSafeBase64Encode(originalText);
console.log(encodedText); // 输出: "SGVsbG8sIFdvcmxkISovLy8="
let decodedText = urlSafeBase64Decode(encodedText);
console.log(decodedText); // 输出: "Hello, World!+/="
通过这种方式,可以确保即使在包含特殊字符的情况下,Base64编码和解码也能正确进行。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云