首頁 >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