Ce face btoa / atob (Base64)
Base64 scrie orice date folosind doar 64 de caractere sigure (litere, cifre, +, /). btoa (binary to ASCII) codifică, iar atob decodifică. Se folosesc pentru date în adrese data:, autentificare HTTP Basic sau valori transmise prin text.
Limitare importantă: btoa acceptă doar caractere cu cod până la 255. Un text cu „ș” sau „ț” aruncă InvalidCharacterError. Pentru texte UTF-8, codifică întâi octeții cu TextEncoder și folosește Uint8Array.prototype.toBase64 (sau o conversie prin String.fromCharCode).
Parametri
| Parametru | Descriere |
|---|---|
text |
Textul de codificat sau decodificat. |
Ce returnează
Un șir de caractere.
Exemple
Exemplul 1: Codificare și decodificare
const codat = btoa("ana:parola123");
console.log(codat);
console.log(atob(codat));
console.log(`Authorization: Basic ${codat}`);
Rezultat
YW5hOnBhcm9sYTEyMw==
ana:parola123
Authorization: Basic YW5hOnBhcm9sYTEyMw==
Exemplul 2: Diacriticele
try {
btoa("Brașov");
} catch (e) {
console.log(e.name);
}
const octeti = new TextEncoder().encode("Brașov");
const b64 = btoa(String.fromCharCode(...octeti));
console.log(b64);
const inapoi = Uint8Array.from(atob(b64), (c) => c.charCodeAt(0));
console.log(new TextDecoder().decode(inapoi));
Rezultat
InvalidCharacterError
QnJhyJlvdg==
Brașov
Greșeli frecvente
- Crezi că Base64 ascunde datele. Oricine le decodifică cu
atob; nu este criptare.
Comenzi înrudite
Uint8Array.prototype.toBase64 / fromBase64: Transformă octeți în text Base64 și înapoi, direct, fără btoa și atob.TextEncoder / TextDecoder: Transformă textul în octeți UTF-8 (encode) și octeții înapoi în text (decode).encodeURIComponent / decodeURIComponent: Codifică un text ca să poată fi pus sigur într-o adresă URL (spații, diacritice, &, =) și îl decodifică.