WindowBase64.btoa()

Создаёт ASCII строку закодированную в base-64 из "строки" бинарных данных.

Будьте внимательней этот способ не подходит для Unicode строк! Описание работы с Unicode в секции ниже.

Синтаксис

var encodedData = window.btoa(stringToEncode);

Пример

var encodedData = window.btoa("Hello, world"); // encode a string
var decodedData = window.atob(encodedData); // decode the string

Замечания

Вы можете воспользоваться этим способом, чтобы избежать проблем при передаче данных через сетевое соединение. Для этого нужно перекодировать данные в base64 и отправить их, и на другой стороне с помощью метода window.atob() (en-US) декодировать полученные данные в исходный вид. Например, вы можете перекодировать управляющие символы ASCII с 0 до 31.

btoa() также доступна для XPCOM компонентов реализованных в JavaScript, даже если window не является глобальным объектом в компонентах.

Строки Юникод

В большинстве браузеров, вызов window.btoa() на Unicode строке выбросит исключение Character 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)));
}

// Usage:
utf8_to_b64('✓ à la mode'); // JTI1dTI3MTMlMjUyMCUyNUUwJTI1MjBsYSUyNTIwbW9kZQ==
b64_to_utf8('JTI1dTI3MTMlMjUyMCUyNUUwJTI1MjBsYSUyNTIwbW9kZQ=='); // "✓ à la mode"

utf8_to_b64('I \u2661 Unicode!'); // SSUyNTIwJTI1dTI2NjElMjUyMFVuaWNvZGUlMjUyMQ==
b64_to_utf8('SSUyNTIwJTI1dTI2NjElMjUyMFVuaWNvZGUlMjUyMQ=='); // "I ♡ Unicode!"

Более правильный и производительный способ - это конвертировать DOMString в UTF-8 строку передав typed arrays. Как это сделать узнать можно здесь в этом параграфе.

Спецификации

Specification Status Comment
HTML Living Standard
Определение 'WindowBase64.btoa()' в этой спецификации.
Живой стандарт No change since the latest snapshot, HTML 5.1.
HTML 5.1
Определение 'WindowBase64.btoa()' в этой спецификации.
Рекомендация Snapshot of HTML Living Standard. No change.
HTML5
Определение 'WindowBase64.btoa()' в этой спецификации.
Рекомендация Snapshot of HTML Living Standard. Creation of WindowBase64 (properties where on the target before it).

Совместимость браузеров

BCD tables only load in the browser

Смотрите также