ホームページ >ウェブフロントエンド >jsチュートリアル >さまざまなブラウザーのサポートとサーバー側の環境を考慮して、JavaScript で Base64 エンコードとデコードを実行するにはどうすればよいですか?

さまざまなブラウザーのサポートとサーバー側の環境を考慮して、JavaScript で Base64 エンコードとデコードを実行するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-12 18:03:15185ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。