Convertir un texte en binaire avec ASCII et UTF-8

Denis Ribeiro .

8 octobre 2026

Tableau ASCII montrant la correspondance entre décimal, hexadécimal et caractères, y compris le texte en binaire.

Un accent qui disparaît après un copier-coller ou une suite de 0 et de 1 impossible à relire révèle souvent le même problème : le texte a été interprété avec le mauvais encodage. Convertir un texte en binaire consiste à représenter ses caractères sous forme d’octets, mais le résultat dépend d’abord de la méthode choisie, notamment ASCII ou UTF-8. Je détaille ici le fonctionnement, les exemples utiles, la conversion manuelle, le code et les erreurs à éviter.

Le binaire devient clair quand on distingue caractères, octets et encodage

  • Un octet contient 8 bits, chacun valant 0 ou 1.
  • ASCII convient surtout aux caractères anglais simples.
  • UTF-8 prend en charge les accents, les alphabets étrangers et les emojis.
  • Un même caractère peut occuper plusieurs octets selon l’encodage.
  • Le binaire n’est pas un chiffrement et ne protège pas un message.

Schéma montrant la conversion du texte en binaire, Base64, chaînes et décodage UTF8.

Ce que l’on convertit réellement en binaire

Un ordinateur ne stocke pas directement la lettre « A » ou le symbole « é ». Il manipule des valeurs numériques, elles-mêmes représentées par des suites de bits. La conversion consiste donc à passer par un encodage de caractères, c’est-à-dire une règle qui associe un caractère à une ou plusieurs valeurs numériques.

Le mot « binaire » désigne uniquement la base 2. Un groupe comme 01000001 contient 8 bits et correspond à la valeur décimale 65. Dans le standard ASCII, 65 représente la lettre majuscule « A ».

Cette précision est essentielle. Sans connaître l’encodage utilisé, une suite binaire ne permet pas toujours de retrouver le message original. La même valeur peut être interprétée différemment par un programme qui attend de l’ASCII, du Latin-1 ou de l’UTF-8.

Un octet, huit bits

Dans la pratique, les convertisseurs affichent généralement chaque octet sur 8 positions, en ajoutant des zéros à gauche si nécessaire. Ainsi, la valeur 65 s’écrit 01000001, et la valeur 32, qui représente un espace en ASCII, devient 00100000.

Les espaces entre les groupes ne font pas partie du message. Ils servent simplement à rendre la lecture possible. Une suite comme 01001000 0069 serait d’ailleurs mal formée si le second groupe n’a pas exactement 8 bits, sauf si l’outil applique une règle particulière.

ASCII et UTF-8 ne donnent pas toujours le même résultat

ASCII utilise à l’origine 7 bits pour coder 128 caractères, notamment les lettres anglaises, les chiffres, la ponctuation et des commandes de contrôle. On l’affiche souvent sur 8 bits en ajoutant un zéro au début, ce qui explique la forme 01000001 pour « A ».

Le problème apparaît dès qu’un message contient « é », « ç », « € » ou un emoji. Ces caractères ne font pas partie de l’ASCII de base. Pour un contenu moderne en français, je recommande presque toujours UTF-8, car il couvre l’ensemble des caractères Unicode et reste compatible avec l’ASCII pour les caractères simples.

Caractère Octets UTF-8 en hexadécimal Représentation binaire
A 41 01000001
é C3 A9 11000011 10101001
€ E2 82 AC 11100010 10000010 10101100
😀 F0 9F 98 80 11110000 10011111 10011000 10000000

Le tableau montre pourquoi compter un caractère comme un seul octet est une erreur fréquente. « A » occupe 1 octet en UTF-8, tandis que « é » en occupe 2 et l’emoji présenté ici, 4. La longueur visuelle d’un mot ne permet donc pas de prévoir exactement sa taille en mémoire.

Comment effectuer la conversion manuellement

Pour convertir un message à la main, je procède toujours dans le même ordre. Cette méthode évite de mélanger la valeur Unicode, l’octet et l’écriture en base 2.

  1. Choisir l’encodage, généralement UTF-8.
  2. Transformer chaque caractère en un ou plusieurs octets.
  3. Convertir chaque octet décimal ou hexadécimal en binaire.
  4. Compléter chaque groupe avec des zéros afin d’obtenir 8 bits.
  5. Séparer les octets par des espaces pour faciliter la vérification.

Exemple avec la lettre A

La lettre « A » possède le code Unicode U+0041. En UTF-8, elle utilise l’octet hexadécimal 41, soit 65 en décimal. La conversion de 65 en base 2 donne 01000001.

Lire aussi : Regex Téléphone Français - La Validation Ultime expliquée

Exemple avec le mot Bonjour

Les lettres de « Bonjour » appartiennent toutes à l’ASCII de base. Chaque caractère occupe donc un octet en UTF-8, ce qui donne la séquence suivante :

01000010 01101111 01101110 01101010 01101111 01110101 01110010

Cette simplicité disparaît avec « Café ». Les trois premières lettres restent sur un octet, mais « é » devient 11000011 10101001. Le mot contient donc 5 octets pour 4 caractères, un détail qui compte dans les fichiers, les protocoles réseau et les limites de taille des bases de données.

Automatiser la conversion avec Python ou JavaScript

Pour un mot isolé, le calcul manuel est instructif. Pour un paragraphe, un script est plus fiable et évite les erreurs de comptage. En Python, la méthode encode("utf-8") transforme explicitement la chaîne en octets avant l’affichage binaire.

message = "Café"

binaire = " ".join(
    f"{octet:08b}" for octet in message.encode("utf-8")
)

print(binaire)

Le résultat sera 01000011 01100001 01100110 11000011 10101001. Le format :08b demande à Python d’afficher chaque valeur en base 2 sur 8 positions, ce qui rend les groupes homogènes.

Le décodage suit le chemin inverse. Il faut découper les groupes, convertir chacun en entier, reconstruire les octets, puis préciser le même encodage.

binaire = "01000011 01100001 01100110 11000011 10101001"

octets = bytes(int(groupe, 2) for groupe in binaire.split())
message = octets.decode("utf-8")

print(message)

Dans un navigateur, TextEncoder est l’outil adapté pour encoder une chaîne en UTF-8. Il est préférable d’utiliser cette API plutôt que de fabriquer soi-même une table de correspondance limitée à l’ASCII.

const message = "Café";
const octets = new TextEncoder().encode(message);

const binaire = [...octets]
  .map(octet => octet.toString(2).padStart(8, "0"))
  .join(" ");

console.log(binaire);

Convertisseur en ligne, script ou calcul manuel

Le choix dépend surtout de la quantité de données et de leur sensibilité. Pour une démonstration rapide, un convertisseur visuel suffit. Pour un traitement répétitif ou une intégration dans une application, le code offre davantage de contrôle sur l’encodage, les séparateurs et les erreurs.

Méthode Avantage principal Limite à connaître
Conversion manuelle Bonne compréhension du fonctionnement Longue et sujette aux erreurs
Outil en ligne Rapide pour un court message Encodage parfois mal indiqué et confidentialité incertaine
Script Python ou JavaScript Automatisation et résultat reproductible Il faut gérer les entrées invalides

Je déconseille de coller un mot de passe, une clé API ou un extrait confidentiel dans un service inconnu. La conversion en binaire ne chiffre rien : elle change seulement la représentation des données. Toute personne qui connaît l’encodage peut revenir au texte lisible.

Il faut aussi distinguer le binaire de l’hexadécimal et de la Base64. L’hexadécimal est plus compact à lire, tandis que la Base64 sert surtout à transporter des données binaires dans des systèmes prévus pour du texte. Aucun de ces formats ne constitue une protection cryptographique.

Pourquoi un décodage peut produire des caractères incorrects

Un message illisible ne signifie pas forcément que les bits sont faux. Le cas le plus courant est un désaccord sur l’encodage. Des octets UTF-8 lus comme du Latin-1 peuvent afficher é à la place de « é », alors que les données d’origine sont intactes.

Les erreurs viennent aussi d’un groupe incomplet, d’un séparateur inattendu ou d’un octet qui ne respecte pas les règles UTF-8. Pour diagnostiquer le problème, je vérifie d’abord que chaque groupe contient 8 bits exactement, puis que l’outil utilise le même encodage à l’aller et au retour.

  • Un groupe contient autre chose que 0 ou 1.
  • La longueur d’un groupe n’est pas de 8 bits.
  • Le texte comporte des accents mais la conversion utilise uniquement ASCII.
  • Le décodage applique un encodage différent de celui de l’encodage initial.
  • Des données binaires sont confondues avec une chaîne de texte.

Dans un programme, il vaut mieux signaler clairement l’erreur que remplacer silencieusement les caractères inconnus. En Python, l’option de décodage stricte permet de repérer immédiatement une séquence invalide, alors qu’un remplacement automatique peut masquer un problème de transmission.

La règle simple pour ne plus confondre caractère et octet

Retenez cette chaîne logique : caractère, encodage, octet, bits. Le caractère « é » n’est pas directement une suite fixe de huit bits : en UTF-8, il devient deux octets, puis seize bits.

Pour les exercices d’initiation, ASCII permet de comprendre rapidement le principe avec des lettres simples. Pour les applications réelles en français, les échanges web et les projets modernes, UTF-8 reste le choix pratique. Une conversion correcte commence donc toujours par l’identification de l’encodage, bien avant le calcul des 0 et des 1.

Questions fréquentes

ASCII couvre surtout les caractères anglais simples et ne contient pas « é », « ç », « € » ni les emojis. En UTF-8, « é » occupe deux octets, soit 11000011 10101001, tandis que « A » n’en utilise qu’un.
Choisissez d’abord l’encodage, généralement UTF-8, puis transformez chaque caractère en un ou plusieurs octets. Convertissez ensuite chaque octet en base 2, complétez avec des zéros pour obtenir 8 bits et séparez les groupes par des espaces.
Utilisez message.encode("utf-8"), puis formatez chaque octet avec :08b. Le résultat est 01000011 01100001 01100110 11000011 10101001, soit 5 octets pour 4 caractères.
Les octets d’origine peuvent être corrects, mais interprétés avec le mauvais encodage, par exemple du Latin-1 au lieu de l’UTF-8. Vérifiez aussi que chaque groupe contient exactement 8 bits et que les séparateurs sont valides.
Évaluer l'article

Moyenne: 3.5 / 5 · 2 évaluations

Tags

encodage ascii utf-8 python octets
Autor Denis Ribeiro
Denis Ribeiro
Je m'appelle Denis Ribeiro et j'ai quatre ans d'expérience dans le domaine de la technologie, en particulier dans les domaines du web, de l'intelligence artificielle, des réseaux et de la sécurité. Mon intérêt pour ces sujets a commencé dès mon plus jeune âge, lorsque j'ai découvert à quel point la technologie pouvait transformer notre quotidien. J'aime expliquer des concepts complexes de manière simple, afin d'aider mes lecteurs à mieux comprendre les enjeux actuels et futurs de notre monde numérique. Dans mes écrits, je m'efforce de fournir des informations utiles, précises et à jour. Je prends le temps de vérifier mes sources et de comparer les informations, tout en suivant les dernières tendances du secteur. Mon objectif est de rendre l'apprentissage accessible à tous, en organisant mes connaissances de manière claire et structurée, afin que chacun puisse naviguer avec confiance dans cet univers en constante évolution.
Commentaires (0)
Ajouter un commentaire