This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

WindowBase64.btoa()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

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

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

Синтаксис

var encodedData = window.btoa(stringToEncode);

Пример

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

Замечания

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

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

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

В большинстве браузеров, вызов window.btoa() на Unicode строке выбросит исключение Character Out Of Range (Символ вне допустимого диапазона).

Чтобы избежать этого, воспользуйтесь паттерном, предложенным Johan Sundström:

js
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
HTML
# dom-btoa-dev

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

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