Base64 existe pour transporter des octets à travers quelque chose qui ne gère que le texte, c'est pourquoi il apparaît dans les URLs de données, les pièces jointes, les JSON Web Tokens, et tout format de configuration qui doit contenir un document entier dans une seule valeur de chaîne.
Le bug que présentent la plupart des outils Base64 du navigateur
La fonction intégrée btoa du navigateur refuse tout ce qui dépasse le
point de code U+00FF. Dès que votre JSON contient une lettre accentuée,
un symbole de devise ou un emoji, btoa lance une erreur, c'est pourquoi
tant d'outils Base64 rapides se cassent dès que le texte du monde réel
les touche.
Utilisation du convertisseur JSON vers Base64
Cet outil encode d'abord en octets UTF-8, ce que font tous les autres langages et tous les serveurs, donc le résultat correspond à ce qu'un backend produirait pour le même document. Encoder
{"name":"café","price":"₹500","clef":"𝄞"}
produit une chaîne Base64 qui se décode, via le propre atob standard du
navigateur et TextDecoder, jusqu'au document exact d'origine : café,
₹500 et le symbole musical 𝄞 survivent tous, y compris ce dernier
caractère qui nécessite une paire de substitut en JavaScript et quatre
octets en UTF-8.
Trois échecs, distingués
Le décodage peut échouer de trois manières authentiquement différentes, et les regrouper sous “entrée invalide” cache laquelle vous regardez :
- Pas du tout Base64. Un caractère en dehors de l'alphabet Base64 est
nommé directement :
This is not Base64: "!" is not a Base64 character, avec la position. - Base64 valide, mais les octets ne sont pas du texte. La chaîne se décode bien en tant qu'octets, mais ces octets ne sont pas du UTF-8 valide, ce qui signifie généralement que vous avez du Base64 d'un fichier binaire plutôt que d'un document.
- Texte valide, mais pas du JSON. Le Base64 s'est parfaitement décodé en une chaîne, et cette chaîne n'est pas un document JSON, signalé avec le même type de message que le formateur et le validateur donnent pour du JSON cassé.
Quels formats il accepte
Le décodage tolère un préfixe d'URL data:, des sauts de ligne dans le
texte Base64, et l'alphabet sur pour les URLs qui substitue - et _ à
+ et /. Collez directement une URL de données copiée de l'onglet réseau
d'un navigateur ; le préfixe est automatiquement supprimé.
Est-ce du chiffrement
Non. Base64 est un encodage, pas un chiffre. N'importe qui peut le décoder avec une seule ligne de code dans n'importe quel langage, y compris en le collant dans ce même outil dans l'autre sens. Il sert à rendre les octets sûrs pour les transporter à travers un canal de texte uniquement, pas à les garder secrets.