Comment convertir du Base64 en texte
- Collez la chaîne Base64 dans la zone Entrée · Base64. Les espaces, les sauts de ligne et les guillemets autour ne posent pas de problème.
- Lisez le texte dans Sortie · texte. La ligne d’état sous l’outil indique si l’entrée était du Base64 valide, combien d’octets elle contenait et à quoi ressemble le contenu.
- Si la sortie affiche
�ou des lettres bizarres, changez le Jeu de caractères. Détection automatique recherche une marque d’ordre des octets, de l’UTF-8 et de l’UTF-16. - Copiez le texte avec Copier la sortie, ou enregistrez-le avec Télécharger.
L’opération inverse est Texte en Base64.
Comment savoir si une chaîne est du Base64
Une chaîne Base64 n’utilise que 64 caractères, plus = pour le remplissage. Le Base64 standard utilise + et / ; la variante URL-safe utilise - et _ à la place. Les chaînes avec remplissage ont une longueur divisible par 4, et les signes = ne peuvent se trouver qu’à la fin.
Ces règles sont nécessaires mais pas suffisantes. Beaucoup de mots ordinaires les respectent : Test est du Base64 valide et se décode en trois octets 4D EB 2D, qui ne veulent rien dire. Le test pratique consiste à décoder la chaîne et à voir si quelque chose de sensé en sort. S’il vous faut plus qu’un oui ou un non, le validateur Base64 indique quelle règle de caractère, de longueur ou de remplissage une chaîne enfreint, et estime la probabilité qu’il s’agisse vraiment de Base64.
Exemples
| Chaîne Base64 | Texte | Remarque |
|---|---|---|
VGhhbmsgeW91IQ== | Thank you! | ASCII simple |
SGVsbG8sIFfDtnJsZA== | Hello, Wörld | ö occupe deux octets en UTF-8 |
5L2g5aW9 | 你好 | Six octets, trois par caractère |
0J/RgNC40LLQtdGC | Привет | Cyrillique en UTF-8 |
QmFzZTY0IGlzIG5vdCBlbmNyeXB0aW9uLg== | Base64 is not encryption. | N’importe qui peut le lire |
dXNlcm5hbWU6c2VjcmV0 | username:secret | Le format d’un en-tête HTTP Basic auth |
Comme le montre la dernière ligne, quiconque voit un en-tête Authorization: Basic peut y lire le mot de passe. Le décodeur Basic Auth sépare un tel en-tête en utilisateur et mot de passe, et encodage ou chiffrement explique pourquoi c’est HTTPS qui le garde réellement privé.
Des octets à une chaîne
Décoder du Base64 vous donne des octets. En tirer une chaîne est une seconde étape qui demande un jeu de caractères, et c’est à cette étape que naissent la plupart des problèmes de « texte faux ». La plupart des langages rendent ces deux étapes explicites :
import base64
raw = base64.b64decode("SGVsbG8sIFfDtnJsZA==")
raw # b'Hello, W\xc3\xb6rld'
raw.decode("utf-8") # 'Hello, Wörld'
raw.decode("latin-1") # 'Hello, Wörld'
En JavaScript, un TextDecoder avec fatal: true lève une TypeError au lieu d’insérer discrètement �, ce qui est utile quand vous préférez échouer plutôt que stocker du texte cassé :
const bytes = Uint8Array.from(atob("Y2Fm6Q=="), c => c.charCodeAt(0));
new TextDecoder("utf-8", { fatal: true }).decode(bytes);
// TypeError: the bytes are not valid UTF-8
new TextDecoder("windows-1252").decode(bytes); // "café"
D’autres modèles se trouvent sur les pages Python et JavaScript.
Quand la sortie n’est pas du texte lisible
- Surtout des symboles, avec quelques mots lisibles. La chaîne contient un fichier. Regardez Ressemble à dans la ligne d’état, puis ouvrez-le dans Base64 en fichier, qui le prévisualise et l’enregistre.
- Des lettres séparées par des espaces vides. Le texte est en UTF-16. Réglez le Jeu de caractères sur UTF-16LE.
- Un texte lisible, mais
és’afficheé. Le texte a été mal décodé quelque part avant d’être encodé. Le Base64 est correct ; ce sont les données d’origine qui ne le sont pas. - La sortie est à nouveau du Base64. La valeur a été encodée deux fois. Copiez la sortie, collez-la en entrée et décodez une fois de plus.
- Des octets d’apparence aléatoire et aucun format détecté. Les données sont probablement chiffrées ou compressées. Le décodage Base64 n’est que la première couche ; pour des données gzip ou zlib, essayez le décodeur Base64 gzip.
FAQ
Qu'est-ce qu'une chaîne Base64 ?
Un texte composé uniquement des caractères A–Z, a–z, 0–9, + et /, qui se termine souvent par = ou ==. Il représente des octets, qui peuvent être du texte, une image ou n’importe quel autre fichier, écrits de façon à survivre aux systèmes qui ne gèrent que des caractères simples.
Comment savoir ce que contient une chaîne Base64 avant de la décoder ?
Les premiers caractères le révèlent souvent : eyJ correspond à du JSON, PD94bWwg à du XML, iVBORw0KGgo à un PNG et JVBERi0 à un PDF. Après le décodage, la ligne d’état nomme le format détecté. Voir les préfixes Base64 courants.
Comment convertir du Base64 en chaîne en Python ?
base64.b64decode(s).decode("utf-8"). Le premier appel renvoie des octets ; .decode() les transforme en str avec le jeu de caractères indiqué.
Pourquoi le texte décodé est-il une autre chaîne Base64 ?
La valeur a été encodée deux fois, ce qui arrive quand deux couches d’un système l’encodent chacune. Recollez la sortie dans l’entrée et décodez à nouveau.