Rumah >hujung hadapan web >tutorial js >Bagaimanakah saya boleh melaksanakan pengekodan dan penyahkodan Base64 dalam JavaScript, dengan mengambil kira sokongan penyemak imbas yang berbeza dan persekitaran sisi pelayan?

Bagaimanakah saya boleh melaksanakan pengekodan dan penyahkodan Base64 dalam JavaScript, dengan mengambil kira sokongan penyemak imbas yang berbeza dan persekitaran sisi pelayan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-12 18:03:15191semak imbas

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

Pengekodan dan Penyahkodan Base64 dalam JavaScript Sisi Pelanggan

JavaScript menawarkan pelbagai pilihan untuk pengekodan dan penyahkodan base64:

Sokongan Pelayar Asli

Pelayar moden seperti Firefox, Chrome, Safari, Opera dan IE10 menyediakan sokongan asli untuk pengekodan base64. Anda boleh menggunakan fungsi btoa() untuk pengekodan dan atob() untuk penyahkodan.

JavaScript Sisi Pelayan

Untuk persekitaran JavaScript sisi pelayan seperti Node.js, anda boleh menggunakan Penampan untuk penyahkodan base64.

Pelayar Silang Perpustakaan

Jika anda memerlukan penyelesaian silang penyemak imbas, anda boleh memanfaatkan perpustakaan sedia ada seperti CryptoJS. Sebagai alternatif, anda boleh menggunakan kod seperti yang diberikan dalam jawapan:

// 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;
}

Perhatikan bahawa kod penyemak imbas yang disediakan mungkin memerlukan ujian tambahan untuk memastikan keserasian dengan penyemak imbas yang berbeza. Adalah dinasihatkan untuk menggunakan perpustakaan yang bereputasi untuk kefungsian merentas pelayar yang lebih andal.

Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan pengekodan dan penyahkodan Base64 dalam JavaScript, dengan mengambil kira sokongan penyemak imbas yang berbeza dan persekitaran sisi pelayan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn