概要
バイナリデータの文字列から 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 |
|---|---|---|---|---|---|
| 基本サポート | ? | ? | 未サポート | ? | (有) |