首页 >web前端 >js教程 >考虑到不同的浏览器支持和服务器端环境,如何在 JavaScript 中执行 Base64 编码和解码?

考虑到不同的浏览器支持和服务器端环境,如何在 JavaScript 中执行 Base64 编码和解码?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-12 18:03:15187浏览

How can I perform Base64 encoding and decoding in JavaScript, considering different browser support and server-side environments?

客户端 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn