btoa / atob (Base64) în JavaScript

URL și codificare Toate browserele, Node.js 16+

Codifică un text în Base64 (btoa) și îl decodifică (atob); atenție la diacritice.

Sintaxă
btoa(text)
atob(textBase64)

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