Base64 esiste per trasportare byte attraverso qualcosa che gestisce solo testo, ed e per questo che appare nei URL di dati, negli allegati di posta, nei JSON Web Tokens, e in qualsiasi formato di configurazione che deve contenere un intero documento in un singolo valore stringa.
Il bug che hanno la maggior parte degli strumenti Base64 del browser
La funzione integrata btoa del browser rifiuta qualsiasi cosa sopra il
punto di codice U+00FF. Nel momento in cui il tuo JSON contiene una lettera
con accento, un simbolo di valuta o un emoji, btoa lancia un errore, ed
e per questo che tanti strumenti Base64 rapidi si rompono all istante
quando il testo del mondo reale li tocca.
Utilizzo del convertitore JSON a Base64
Questo strumento codifica prima in byte UTF-8, che e cio che fanno tutti gli altri linguaggi e tutti i server, quindi il risultato corrisponde a quello che un backend produrrebbe per lo stesso documento. Codificare
{"name":"café","price":"₹500","clef":"𝄞"}
produce una stringa Base64 che decodifica, attraverso il proprio atob
standard del browser e TextDecoder, fino al documento originale esatto:
café, ₹500 e il simbolo musicale 𝄞 sopravvivono tutti, incluso
quell ultimo carattere, che necessita di una coppia sostitutiva in
JavaScript e quattro byte in UTF-8.
Tre fallimenti, distinguiuti
La decodifica puo fallire in tre modi genuinamente diversi, e raggrupparli tutti come “input non valido” nasconde quale stai guardando:
- Non e affatto Base64. Un carattere fuori dall alfabeto Base64 viene
nominato direttamente:
This is not Base64: "!" is not a Base64 character, con la posizione. - Base64 valido, ma i byte non sono testo. La stringa decodifica bene come byte, ma quei byte non sono UTF-8 valido, il che di solito significa che hai Base64 di un file binario invece che di un documento.
- Testo valido, ma non e JSON. Il Base64 si e decodificato perfettamente in una stringa, e quella stringa non e un documento JSON, segnalato con lo stesso tipo di messaggio che il formatore e il validatore danno per JSON rotto.
Quale formato accetta
La decodifica tollera un prefisso URL data:, interruzioni di riga dentro
il testo Base64, e l alfabeto sicuro per gli URL che sostituisce - e _
con + e /. Incolla direttamente un URL di dati copiato dalla scheda
rete di un browser; il prefisso viene rimosso automaticamente.
Questa e crittografia
No. Base64 e una codifica, non una cifra. Chiunque puo decodificarlo con una singola riga di codice in qualsiasi linguaggio, incluso incollandolo in questo stesso strumento nell altra direzione. Serve per rendere i byte sicuri da trasportare attraverso un canale di solo testo, non per mantenerli segreti.