客户端 JavaScript 中的 Base64 编码和解码
JavaScript 提供了一系列用于 Base64 编码和解码的选项:
原生浏览器支持
Firefox、Chrome、Safari、Opera 和 IE10 等现代浏览器提供对 Base64 编码的原生支持。您可以使用 btoa() 函数进行编码,使用 atob() 进行解码。
服务器端 JavaScript
对于 Node.js 等服务器端 JavaScript 环境,您可以利用缓冲区进行 Base64 解码。
跨浏览器库
如果您需要跨浏览器解决方案,您可以利用现有的库,例如 CryptoJS。或者,您可以使用答案中提供的代码:
// Base64 encoding function encodeBase64(str) { var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc = ''; while (i < str.length) { o1 = str.charCodeAt(i); i++; if (i < str.length) { o2 = str.charCodeAt(i); i++; if (i < str.length) { o3 = str.charCodeAt(i); i++; bits = o1 << 16 | o2 << 8 | o3; } else { bits = o1 << 16 | o2 << 8; } } else { bits = o1 << 16; } h1 = bits >> 18 & 0x3f; h2 = bits >> 12 & 0x3f; h3 = bits >> 6 & 0x3f; h4 = bits & 0x3f; enc += b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); } if (ac >= 1) { enc += b64.charAt(h1) + b64.charAt(h2) + '='; } if (ac >= 2) { enc += b64.charAt(h1) + '='; } return enc; } // Base64 decoding function decodeBase64(str) { var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = ''; while (i < str.length) { h1 = b64.indexOf(str.charAt(i)); i++; h2 = b64.indexOf(str.charAt(i)); i++; h3 = b64.indexOf(str.charAt(i)); i++; h4 = b64.indexOf(str.charAt(i)); i++; bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; o1 = bits >> 16 & 0xff; o2 = bits >> 8 & 0xff; o3 = bits & 0xff; dec += String.fromCharCode(o1); if (ac >= 1) { dec += String.fromCharCode(o2); } if (ac >= 2) { dec += String.fromCharCode(o3); } } return dec; }
请注意,提供的跨浏览器代码可能需要额外的测试以确保与不同浏览器的兼容性。建议使用信誉良好的库以获得更可靠的跨浏览器功能。
以上是考虑到不同的浏览器支持和服务器端环境,如何在 JavaScript 中执行 Base64 编码和解码?的详细内容。更多信息请关注PHP中文网其他相关文章!