JavaScript/WindowOrWorkerGlobalScope/atob

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Die Funktion atob() enkodiert einen Base64-ASCII-String in einen (binären) String (daher auch atob: ascii to binary).

Syntax

atob(String)

  • String: ein Base64-String

Anwendungsbeispiele

Einfaches Anwendungsbeispiel

Beispiel ansehen …
document.addEventListener('DOMContentLoaded', function(evt) {
	document.getElementById('enc').addEventListener('click', decode);
});

function decode() {
	let ein = document.getElementById('ein').value;
	let b64 = btoa(ein);
	let ab = ein === atob(b64) ? '☑' : '☒';
	document.getElementById('aus').textContent = ab + ' ' + b64;
}
Das Beispiel stellt einen einfachen (einzeiligen) Base64-Codierer dar: Die Eingabe aus dem Eingabefeld wird base64-kodiert im output-Element ausgegeben. Zur Kontrolle wird der base64-kodierte String wieder enkodiert; sind Ein- und Ausgabe gleich, wird ein Häkchen angezeigt, ansonsten ein .
Beachten Sie: Dieses Beispiel funktioniert nur für Strings, in denen jedes Zeichen auch nur ein Byte belegt. Die Eingabe von Zeichen wie wirft daher einen InvalidCharacterError.

Unicode-Strings

Die Base64-Daten können beliebige Binärdaten sein, auch Mehrbyte-Strings. Das Beispiel von btoa können wir daher übertragen[1]:

Beispiel ansehen …
document.addEventListener('DOMContentLoaded', function(evt) {
	document.getElementById('encu').addEventListener('click', decode);
});

function decode() {
	let s = document.getElementById('einu').value;
	let uc = new Uint16Array(s.length);

	for (let i = 0; i < uc.length; ++i) {
		uc[i] = s.charCodeAt(i);
	}

	let b64 = btoa(String.fromCharCode(...new Uint8Array(uc.buffer)));
	document.getElementById('ausb64').textContent = b64;

	let a64 = atob(b64);
	document.getElementById('ausb').value = a64;
	let b = new Uint8Array(a64.length);

	for (let i = 0; i < b.length; ++i) {
		b[i] = a64.charCodeAt(i);
	}

	document.getElementById('ausu').value =
		String.fromCharCode(...new Uint16Array(b.buffer));
}
Dieses Beispiel stellt einen einfachen (einzeiligen) Base64-Codierer dar, der auch auf Unicode-Zeichen operiert: Die Unicode-Eingabe aus dem Eingabefeld wird in Byte-Array konvertiert und dann base64-codiert im output-Element ausgegeben. Die Base64-Daten werden dann schrittweise dekodiert: Im Ausgabefeld Binär ist das Zwischenergebnis von atob zu sehen, in Unicode dann der komplett dekodierte String. Für die Eingabe ergeben sich in Base 64 kiE=, nach atob ’! (hexadezimal C2 92 21) und komplett dekodiert wieder .

Quellen

  1. MDN: WindowOrWorkerGlobalScope.btoa()

Weblinks