概要
バイナリデータの文字列から base64 エンコードされた文字列を作成します。
※このメソッドは生のユニコード文字列には適していません。詳細については後述します。
構文
encodedData = window.btoa(stringToEncode);
例
var encodedData = window.btoa("Hello, world"); // 文字列のエンコード var decodedData = window.atob(encodedData); // 文字列のデコード
注記
このメソッドは、そのまま送信すると問題を起こす可能性のあるデータをエンコードしてから送信する用途に用いる事が出来ます。送信したデータは、受信側で window.atob
メソッドを使って元のデータにデコードすることができます。例えば、0 から 31 までの ASCII 値のような制御文字をエンコードすることができます。
window
は、コンポーネント内ではグローバルオブジェクトではありませんが、btoa()
を JavaScript で実装された XPCOM コンポーネントで利用する事もできます。
ユニコード文字列
殆どのブラウザでは、window.btoa
のパラメータにユニコードの文字列を指定して呼び出すと、例外「範囲外 (Out Of Range)」が返ります。
この問題を回避する為に、Johan Sundström 氏が提示したパターンの使用を検討してください。
function utf8_to_b64(str) { return window.btoa( unescape(encodeURIComponent( str )) ); } function b64_to_utf8(str) { return decodeURIComponent( escape(window.atob( str )) ); } // 使用方法 : utf8_to_b64('✓ à la mode'); // "4pyTIMOgIGxhIG1vZGU=" b64_to_utf8('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"
仕様
DOM Level 0。どの標準にも属しません。
ブラウザ実装状況
機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
基本サポート | (有) | (有) | 10 | (有) | (有) |
機能 | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
基本サポート | ? | ? | 未サポート | ? | (有) |