Aller au contenu principal

Texte en binaire

Ce convertisseur montre les octets UTF-8 derrière n’importe quel texte sous forme de groupes binaires de 8 bits, et fait de même dans l’autre sens. Les caractères ASCII prennent un octet, les émojis quatre ; le décodeur rejette les entrées qui ne sont pas un multiple de 8 bits ou qui ne sont pas du UTF-8 valide. Tout s’exécute localement dans votre navigateur.

100 % local

Texte en binaire en clair

Il n’existe pas de binaire pour une lettre : les bits décrivent les octets, et les octets dépendent de l’encodage. Cet outil montre l’encodage adopté par le web — UTF-8, selon la RFC 3629, dans lequel chaque caractère de a à 🙂 occupe de un à quatre octets, affichés en groupes de 8 bits.

L’encodage est auto-descriptif : le premier octet annonce la longueur. Un octet commençant par 0 est un octet d’ASCII ; 110 en commence deux ; 1110 en commence trois ; 11110 en commence quatre ; chaque octet de continuation commence par 10. Mémorisez cette seule règle et la sortie devient lisible.

L’inverse décode : collez des bits, obtenez du texte. Le décodage est délibérément strict — un nombre de bits qui n’est pas un nombre entier d’octets, ou des octets qui violent les règles de continuation du UTF-8, sont rejetés plutôt que décodés en caractères de remplacement. La conversion se produit dans cet onglet ; rien n’est envoyé.

Les bits bruts sont pour voir ; lorsque ces octets doivent traverser un canal texte uniquement, base64 est l’enveloppe standard, et le Guide Base64 expliqué explique pourquoi il a été conçu ainsi.

Le binaire est verbeux — huit caractères par octet — et le Comparaison Base64 contre hexadécimal montre pourquoi l’hexadécimal gagne généralement sur le papier et comment les deux notations se rapportent.

Comment le texte devient des bits

Le convertisseur transmet votre texte au TextEncoder du navigateur, qui émet directement des octets UTF-8. Ceci est important pour les émojis : les chaînes JavaScript stockent 🙂 comme deux moitiés de substitution, mais l’encodeur travaille sur des points de code, produisant ainsi une séquence de quatre octets. Chaque octet est complété pour atteindre exactement huit bits et groupé — huit octets par ligne par défaut.

  • Encoder : la chaîne devient des octets UTF-8 via TextEncoder — pas de BOM, pas de dépendance locale.
  • Afficher : chaque octet est écrit en 8 bits, complété par des zéros — 0x48 est 01001000, pas 1001000.
  • Grouper : les octets sont séparés par des espaces, les lignes par des sauts de ligne, selon le groupement choisi.
  • Décoder : le chemin inverse supprime tout caractère non 01, reconstitue les octets, et décode du UTF-8 strict.

Lire la sortie : l’octet de tête indique la longueur

Le but de conception du UTF-8 était la compatibilité ASCII, et les motifs le montrent. ASCII conserve ses codes d’un octet familiers — 01000001 est A dans les deux — tandis que les séquences plus longues sont construites à partir d’octets de tête et de continuation selon des motifs fixes :

  • é (U+00E9) est 11000011 10101001 — un tête de deux octets et une continuation.
  • 🙂 (U+1F642) est 11110000 10011111 10011001 10000010 — la forme à quatre octets.
  • Un octet préfixé 10 isolé est une continuation sans tête — la signature classique d’une corruption.
Plage de points de codeOctetsMotif
U+0000 – U+007F (ASCII)10xxxxxxx
U+0080 – U+07FF2110xxxxx 10xxxxxx
U+0800 – U+FFFF31110xxxx 10xxxxxx 10xxxxxx
U+10000 – U+10FFFF (les émojis sont ici)411110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Ce que le décodage rejette, et pourquoi

Le décodage accepte volontairement un formatage désordonné : espaces, virgules et sauts de ligne sont supprimés avant analyse. Deux rejets persistent : un nombre de bits qui n’est pas un multiple de 8 ne peut être divisé en octets — l’erreur rapporte le nombre exact — et des octets qui violent les motifs ci-dessus sont refusés par un décodeur UTF-8 fatal plutôt que remplacés par U+FFFD.

Ce second rejet sauve des après-midis : un décodeur tolérant transforme une séquence cassée en une chaîne de caractères � qui semblent plausibles et sont silencieusement erronés. Refuser signifie que la cause est investiguée plutôt que livrée.

Où les groupes de 8 bits apparaissent ailleurs

Le réseau appelle un octet un octet : une adresse IPv4 est quatre de ces groupes en décimal, et un masque de sous-réseau est une série de 1 suivis de 0 sur les mêmes 32 bits. La vue binaire explique aussi le mojibake — é en UTF-8 est 11000011 10101001, et lu comme du Latin-1 ces octets sont à et ©, le motif é que l’on voit quand le UTF-8 est décodé avec le mauvais encodage. Voir les octets est le diagnostic le plus rapide.

Questions fréquentes

La conversion de texte en binaire envoie-elle des données ?

Non. Les octets proviennent du TextEncoder intégré au navigateur, le décodage utilise son TextDecoder — les deux dans cet onglet ; aucune requête n’est effectuée pendant une conversion, que le panneau Réseau de DevTools confirme. La page est servie avec connect-src 'self', donc le navigateur refuserait tout appel sortant qu’un script tenterait.

La forme binaire d’un caractère est-elle toujours la même ?

Non — cela dépend de l’encodage. é est deux octets (11000011 10101001) en UTF-8, un octet (11101001) en Latin-1. Cet outil utilise toujours UTF-8, la norme du web selon la RFC 3629, correspondant à ce que les navigateurs transmettent et que la plupart des formats de fichier supposent.

Combien de bits un émoji prend-il en UTF-8 ?

La plupart prennent quatre octets — 32 bits — car ils se situent au-dessus de U+10000, la plage que le UTF-8 encode avec un octet de tête 11110xxx et trois continuations. Quelques symboles plus anciens comme ☺ sont en dessous de U+10000 et en prennent trois. ASCII est l’autre extrême : un octet par caractère.

Pourquoi mon décodage a-t-il été rejeté comme n’étant pas un multiple de 8 ?

Les bits ne deviennent des octets que dans des groupes complets de huit ; un reste signifie qu’il manque ou qu’il y a un élément en trop — un collage tronqué, une ligne omise, un chiffre parasite. L’erreur indique le nombre exact de bits. Le formatage n’est jamais la cause : les espaces et sauts de ligne sont supprimés avant le comptage.

Que signifie l’erreur UTF-8 non valide sur le décodage ?

Les octets ont violé le contrat du UTF-8 : un octet de continuation sans tête, une séquence multi-octets tronquée à la fin, ou un motif impossible. L’outil décode de manière fatale — refusant plutôt que de substituer des marques U+FFFD — car une sortie mojibake silencieusement est pire qu’une erreur. Des données qui n’ont jamais été du UTF-8, comme du texte Latin-1, déclenchent cela par design.

Puis-je coller du binaire avec des espaces ou des sauts de ligne ?

Oui. Tout caractère qui n’est pas 0 ou 1 est supprimé avant analyse, donc les groupes espacés, les vidanges d’un octet par ligne et les listes séparées par des virgules sont toutes analysables. Si les chiffres eux-mêmes sont endommagés, le décodage strict le capture — le formatage est pardonné, pas les données.