Codificare e decodificare in base64
La funzione btoa del browser digerisce solo latin-1 e si rompe al primo accento. Qui la stringa passa per UTF-8 prima della codifica, così «déjà vu» torna intatto.
Come funziona il controllo
- 1
Il testo diventa byte
Prima la codifica UTF-8: è ciò che preserva accenti, emoji e ideogrammi.
- 2
I byte diventano base64
Tre byte si trasformano in quattro caratteri presi da un alfabeto di 64 segni.
- 3
Variante URL-safe se serve
I caratteri + e / diventano - e _, e il riempimento = viene tolto.
Il base64 non è cifratura
È una codifica reversibile senza chiave: chiunque la decodifica in un secondo. Serve a far passare byte attraverso un canale che accetta solo testo: un'email, un URL, un campo JSON. Metterci una password equivale a scriverla in chiaro.
Altra conseguenza: il base64 ingrossa il dato di circa un terzo. Un'immagine in data-URI pesa quindi più del file originale.
Domande frequenti
Perché altrove i miei accenti diventano punti interrogativi?
Perché lo strumento codifica in latin-1 invece che in UTF-8. La funzione btoa del browser solleva un errore oltre il carattere 255; alcune implementazioni lo aggirano troncando, cosa che distrugge i caratteri accentati.
Cosa significano i segni = alla fine?
Sono riempimento. Il base64 lavora a gruppi di tre byte; quando l'ultimo gruppo è incompleto, uno o due segni = completano il blocco. La variante URL-safe li toglie e il decodificatore li rimette.
Quando usare la variante URL-safe?
Ogni volta che la stringa viaggia in un URL o in un nome di file. I caratteri + e / lì hanno un significato proprio e verrebbero reinterpretati; - e _ passano ovunque. È la variante usata dai token JWT.
Lo stesso controllo via API
Questo strumento gira nel vostro browser. Per lo stesso controllo dal vostro codice, in blocco o lato server, l'API risponde in JSON.
Vedi la documentazione