Exemple de Base64
Variante gata făcute: copiază codul direct sau deschide exemplul în generator și modifică-l după nevoie.
.icon {
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMCAxMCI+PGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjUiLz48L3N2Zz4=");
}
Authorization: Basic dXRpbGl6YXRvcjpwYXJvbGE=
const bytes = new TextEncoder().encode('Țară și munți');
const base64 = btoa(String.fromCharCode(...bytes));
// yJphcsSDIMiZaSBtdW7Im2k=
<?php
echo base64_encode('Salut!'); // U2FsdXQh
echo base64_decode('U2FsdXQh'); // Salut!
# Linux / macOS
echo -n 'Salut!' | base64 # U2FsdXQh
echo 'U2FsdXQh' | base64 -d # Salut!
Cum folosești encoderul Base64
- Alege modul: codează sau decodează.
- Scrie sau lipește textul; rezultatul apare imediat. Diacriticele sunt tratate corect, ca UTF-8.
- Bifează varianta URL-safe dacă rezultatul ajunge într-o adresă sau într-un token.
- Ca să obții un data URI, apasă Alege un fișier. Fișierul este citit în browser; nu se trimite nimic către server.
Ce este Base64
Base64 scrie date binare folosind doar 64 de caractere sigure: A–Z, a–z, 0–9, + și /, plus = pentru completare la final. Fiecare 3 octeți devin 4 caractere, deci rezultatul este cu aproximativ 33% mai mare. Este o codificare, nu o criptare: oricine îl poate decoda, așa că nu ascunde nimic.
Varianta URL-safe înlocuiește + cu - și / cu _, caractere care nu au sens special în adrese, și de obicei renunță la =. O folosesc, de exemplu, token-urile JWT.
Data URI
Un fișier mic poate fi pus direct în HTML sau CSS, fără o cerere separată. Merită doar pentru fișiere foarte mici, pentru că nu se salvează separat în cache și mărește pagina.
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." alt="">
Base64 în cod
În JavaScript, btoa() acceptă doar caractere Latin-1 și dă eroare la „ș” sau „ț”. Transformă întâi textul în octeți UTF-8 cu TextEncoder:
// JavaScript cu diacritice
const octeti = new TextEncoder().encode("Țară și munți");
const b64 = btoa(String.fromCharCode(...octeti));
const text = new TextDecoder().decode(Uint8Array.from(atob(b64), c => c.charCodeAt(0)));
// PHP
base64_encode("Țară și munți");
base64_decode($b64);
# Linux și macOS
echo -n "Țară și munți" | base64
echo "yJphcsSDIMiZaSBtdW7Im2k=" | base64 --decode
Mai multe găsești în Învață JavaScript și Învață Linux.
Întrebări frecvente
De ce rezultatul se termină cu = sau ==?
Este completarea (padding) folosită când lungimea datelor nu se împarte exact la 3. Un = înseamnă că lipsea un octet, două înseamnă că lipseau doi.
De ce iese alt rezultat în terminal?
Fără -n, echo adaugă un rând nou la final, care este codat și el.