Base64 transforme des groupes de trois octets en quatre caractères. Le signe = complète le dernier groupe lorsque sa taille est insuffisante. Il indique un remplissage et ne représente pas une lettre du texte initial.
Compter les octets
Un octet restant exige == ; deux exigent = ; trois n’en exigent aucun. f donne Zg==, fo donne Zm8= et foo donne Zm9v. Comptez les octets UTF-8, car une lettre accentuée ou un emoji peut occuper plusieurs octets.
Restaurer un remplissage absent
Après suppression des espaces, une longueur modulo 4 de 2 peut recevoir == et une longueur modulo 4 de 3 peut recevoir =. Un reste de 1 signale une longueur impossible : ajouter des = ne suffit pas. Vérifiez aussi l’alphabet et le protocole utilisé.
Distinguer absence et erreur
Decodex accepte Zg et Zg==, mais refuse Zg= car le remplissage présent est incomplet. Il refuse également A=AA et Zg===. Ne supprimez pas arbitrairement les caractères pour masquer une corruption. Certains protocoles imposent un remplissage exact, d’autres l’omettent.
Essayer cet exemple
| Texte | UTF-8 bytes | Base64 | Remplissage |
|---|---|---|---|
f | 1 | Zg== | == |
fo | 2 | Zm8= | = |
foo | 3 | Zm9v | — |
Questions fréquentes
Une chaîne sans = est-elle toujours incorrecte ?
Non. Les données dont la taille est un multiple de trois octets n’exigent pas de remplissage. Certains protocoles le suppriment également.
Références
Autres guides Base64
Base64 ou Base64URL : différences et exemples
Comprendre les caractères + / et - _, le remplissage et les problèmes de paramètres URL avec des exemples UTF-8.
Base64 en JavaScript : Unicode et erreur btoa
Encoder et décoder du texte Unicode avec TextEncoder, btoa, atob et TextDecoder, sans perdre les accents ou les emojis.
