Comment encoder du texte ASCII en Base64
- Tapez ou collez le texte dans Entrée · texte. Le Jeu de caractères est réglé sur ASCII.
- Le Base64 apparaît dans Sortie · Base64. Si le texte contient des caractères hors ASCII, un avertissement sous l’outil indique combien ont été remplacés par
?. - Supprimez ou remplacez ces caractères, ou passez le Jeu de caractères en UTF-8 si le destinataire le comprend.
- Copiez le résultat ou téléchargez-le sous forme de
base64.txt.
L’opération inverse est Base64 en ASCII.
Ce qui compte comme ASCII
ASCII définit 128 codes, de 0 à 127, d’un octet chacun avec le bit de poids fort à zéro. Les codes 32 à 126 sont les caractères imprimables : l’espace, les chiffres, les lettres anglaises et la ponctuation courante. Les codes 0 à 31 et 127 sont des caractères de contrôle, comme la tabulation (9), le saut de ligne (10) et le retour chariot (13).
Tout le reste, y compris é, ß, €, les guillemets typographiques, les espaces insécables et les emoji, n’est pas de l’ASCII. Le texte collé depuis un traitement de texte ou une page web en contient souvent à votre insu, le plus souvent des guillemets et des tirets typographiques, et l’avertissement de remplacement les repère.
Exemples
| Texte | Base64 | Remarque |
|---|---|---|
Hello, ASCII! | SGVsbG8sIEFTQ0lJIQ== | Identique en UTF-8 |
200 OK | MjAwIE9L | 6 octets, pas de remplissage |
{}[]<> | e31bXTw+ | La ponctuation, ce sont des octets ordinaires |
a, tabulation, b | YQli | La tabulation est l’octet 09 |
line1 CR LF line2 | bGluZTENCmxpbmUy | 0D 0A au milieu |
user:pass | dXNlcjpwYXNz | Identifiants HTTP Basic auth |
Grüße | R3I/P2U= | 2 caractères remplacés par ? |
naïve café | bmE/dmUgY2FmPw== | 2 caractères remplacés par ? |
Encoder chaque caractère sur un octet rend aussi la taille facile à prévoir : n caractères donnent 4 × ⌈n / 3⌉ caractères Base64.
Pourquoi ASCII et Base64 vont ensemble
Base64 a été conçu pour des canaux qui ne transportaient de façon fiable que de l’ASCII 7 bits. Les débuts de l’e-mail (SMTP) en sont l’exemple classique : les octets au-delà de 127 pouvaient être supprimés ou altérés en route, si bien que les pièces jointes binaires et les textes non anglais étaient encodés dans un sous-ensemble de l’ASCII que tous les systèmes géraient. C’est toujours la raison d’être de Base64, et cela explique son alphabet : 64 caractères imprimables, identiques dans tous les jeux de caractères dérivés de l’ASCII et, à part + et /, sans caractère ayant un sens particulier dans les formats courants. Le fonctionnement de Base64 détaille la mécanique.
Certains systèmes n’acceptent encore que l’ASCII, par exemple des interfaces anciennes et les valeurs d’en-têtes HTTP, où le traitement du non-ASCII varie selon les serveurs. Encoder ici avec le jeu de caractères ASCII confirme que l’entrée est sûre pour eux avant qu’elle parte ailleurs. Pour l’en-tête Authorization en particulier, le générateur d’en-tête Basic Auth construit la valeur complète Basic dXNlcjpwYXNz.
ASCII en Base64 dans le code
Python refuse par défaut les caractères non ASCII, ce qui fait une vérification utile :
import base64
base64.b64encode("200 OK".encode("ascii")).decode() # 'MjAwIE9L'
"Grüße".encode("ascii")
# UnicodeEncodeError: 'ascii' codec can't encode characters in position 2-3
"Grüße".encode("ascii", errors="replace") # b'Gr??e', like this tool
En JavaScript, btoa() accepte tous les caractères jusqu’au code 255 : il ne repérera donc pas des lettres Latin-1 comme ü. Testez d’abord la chaîne avec /^[\x00-\x7F]*$/.test(s) si elle doit être purement ASCII. Plus de détails sur les pages Python et JavaScript.
FAQ
ASCII en Base64, est-ce différent d'UTF-8 en Base64 ?
Pas pour du texte purement ASCII. UTF-8 a été conçu pour que les 128 premiers caractères gardent leur valeur d’octet ASCII : Hello, ASCII! donne donc SGVsbG8sIEFTQ0lJIQ== dans les deux cas. Ils ne diffèrent que si le texte contient d’autres caractères.
Que deviennent les caractères comme ü ou les emoji ?
ASCII n’a pas de code pour eux : chacun devient ? (octet 3F) et l’outil indique combien ont été remplacés. Grüße s’encode en R3I/P2U=, qui se décode en Gr??e.
La sortie Base64 est-elle elle-même de l'ASCII ?
Oui. Les 65 caractères qu’utilise Base64 (A–Z, a–z, 0–9, +, / et =) sont de l’ASCII imprimable, c’est pourquoi Base64 passe dans les systèmes qui ne gèrent que du texte 7 bits.
Peut-on encoder des caractères de contrôle comme les tabulations et les sauts de ligne ?
Oui. Ils font aussi partie de l’ASCII (codes 0–31) et s’encodent comme n’importe quel autre octet : a, tabulation, b donne YQli.