--- title: WindowBase64.btoa() slug: Web/API/btoa translation_of: Web/API/WindowOrWorkerGlobalScope/btoa original_slug: Web/API/WindowOrWorkerGlobalScope/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 и отправить их, и на другой стороне с помощью метода {{domxref("WindowBase64.atob","window.atob()")}}
декодировать полученные данные в исходный вид. Например, вы можете перекодировать управляющие символы 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 |
---|---|---|
{{SpecName('HTML WHATWG', '#dom-windowbase64-btoa', 'WindowBase64.btoa()')}} | {{Spec2('HTML WHATWG')}} | No change since the latest snapshot, {{SpecName("HTML5.1")}}. |
{{SpecName('HTML5.1', '#dom-windowbase64-btoa', 'WindowBase64.btoa()')}} | {{Spec2('HTML5.1')}} | Snapshot of {{SpecName("HTML WHATWG")}}. No change. |
{{SpecName("HTML5 W3C", "#dom-windowbase64-btoa", "WindowBase64.btoa()")}} | {{Spec2('HTML5 W3C')}} | Snapshot of {{SpecName("HTML WHATWG")}}. Creation of WindowBase64 (properties where on the target before it). |
{{Compat("api.WindowOrWorkerGlobalScope.btoa")}}
data
URIs