Maison > interface Web > js tutoriel > Comment puis-je effectuer l'encodage et le décodage Base64 en JavaScript, en tenant compte des différentes prises en charge des navigateurs et des environnements côté serveur ?

Comment puis-je effectuer l'encodage et le décodage Base64 en JavaScript, en tenant compte des différentes prises en charge des navigateurs et des environnements côté serveur ?

Mary-Kate Olsen
Libérer: 2024-12-12 18:03:15
original
184 Les gens l'ont consulté

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

Encodage et décodage Base64 dans JavaScript côté client

JavaScript offre une gamme d'options pour l'encodage et le décodage base64 :

Prise en charge native des navigateurs

Navigateurs modernes tels que car Firefox, Chrome, Safari, Opera et IE10 offrent une prise en charge native de l'encodage base64. Vous pouvez utiliser la fonction btoa() pour l'encodage et atob() pour le décodage.

JavaScript côté serveur

Pour les environnements JavaScript côté serveur comme Node.js, vous pouvez utiliser des tampons pour le décodage base64.

Cross-Browser Bibliothèques

Si vous avez besoin d'une solution multi-navigateurs, vous pouvez exploiter les bibliothèques existantes telles que CryptoJS. Vous pouvez également utiliser un code comme celui fourni dans la réponse :

// 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;
}
Copier après la connexion

Notez que le code multi-navigateur fourni peut nécessiter des tests supplémentaires pour garantir la compatibilité avec différents navigateurs. Il est conseillé d'utiliser une bibliothèque réputée pour une fonctionnalité multi-navigateur plus fiable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal