Calculateur de taille en octets UTF-8
Données
| Texte | Héllo |
|---|
Calculateur de taille en octets UTF-8
Saisissez un texte pour connaître sa taille en octets UTF-8, sa taille en octets UTF-16 et son nombre de caractères (points de code). Les lettres ASCII occupent un octet UTF-8 chacune, les lettres accentuées deux, la plupart des autres écritures trois et les emojis quatre — c’est pourquoi la taille en octets d’une chaîne peut dépasser le nombre de caractères visibles.
Données
Texte
Résultats
Saisissez une valeur pour afficher les résultats.
Taille
Taille en octets UTF-8
Une chaîne de texte et le nombre d’octets qu’elle occupe ne sont pas la même chose. À l’écran, un mot est une suite de caractères ; en mémoire et sur le réseau, c’est une suite d’octets, et les deux comptes coïncident rarement. Ce calculateur prend un texte et renvoie trois nombres : combien de caractères (points de code Unicode) il contient, combien d’octets il occupe en UTF-8 et combien d’octets il occupe en UTF-16. C’est utile pour dimensionner des colonnes de base de données, vérifier des limites d’API et de longueur de message, et comprendre pourquoi une chaîne d’apparence courte peut être étonnamment volumineuse.
Caractères et octets
Un caractère est une unité d’écriture : une lettre, un chiffre, un idéogramme, un emoji. Unicode attribue à chacun un nombre appelé point de code, noté par exemple U+00E9. Un octet est une unité de stockage de huit bits. Un encodage est la règle qui transforme les points de code en octets, et des encodages différents produisent des comptes d’octets différents pour le même texte.
En français courant la différence passe inaperçue, car dans les encodages habituels chaque caractère ASCII se trouve correspondre à un nombre entier d’octets. L’écart apparaît dès que le texte contient des accents, des écritures non latines ou des emojis.
Comment UTF-8 dimensionne un caractère
UTF-8 est un encodage à largeur variable : un caractère occupe de un à quatre octets selon son point de code.
U+0000–U+007F(ASCII : lettres latines non accentuées, chiffres, ponctuation courante) : 1 octetU+0080–U+07FF(lettres latines accentuées, grec, cyrillique, hébreu, arabe) : 2 octetsU+0800–U+FFFF(la plupart des écritures CJC et autres) : 3 octetsU+10000et au-delà (emojis et caractères rares) : 4 octets
Comme les caractères ASCII restent sur un octet, UTF-8 est compatible avec l’ASCII, ce qui explique en grande partie pourquoi il est devenu l’encodage par défaut du web et des fichiers texte.
Comment UTF-16 dimensionne un caractère
UTF-16 stocke la plupart des caractères dans une seule unité de code de 16 bits, soit deux octets. Les caractères au-delà de U+FFFF — emojis et autres symboles rares — sont stockés sous forme de paire de substitution de deux unités de code et occupent donc quatre octets. Il n’existe pas de cas à un octet : même une lettre ASCII ordinaire coûte deux octets en UTF-16. C’est le format des chaînes en mémoire de langages comme Java, C# et JavaScript.
Exemple résolu
Prenons le texte Héllo.
Il y a 5 caractères mais 6 octets UTF-8, car é tombe dans la plage à deux octets. En UTF-16, chacun des 5 caractères est une unité de code de deux octets, soit 10 octets.
Prenons maintenant un seul emoji, 😀 (U+1F600). C’est un caractère, mais il se situe au-delà de U+FFFF. UTF-8 l’encode sur quatre octets, et UTF-16 le stocke en paire de substitution, également quatre octets — pourtant le nombre de caractères n’est que de 1.
Pourquoi la taille en octets compte
Les limites des systèmes réels se comptent généralement en octets, pas en caractères. Une colonne VARCHAR(255) peut limiter des octets ou des caractères selon la base de données et son jeu de caractères ; les restrictions de longueur de message, les champs de charge utile des API, les tailles d’en-têtes HTTP et les validateurs de formulaires sont souvent exprimés en octets. Mesurer à l’avance la taille en octets UTF-8 indique si une valeur tiendra et combien d’espace ou de bande passante elle consommera, ce qu’un simple nombre de caractères ne peut révéler.
Calculateurs associés
Pour voir les valeurs d’octets réelles d’une chaîne sous forme de codes binaires, hexadécimaux et décimaux, utilisez le Convertir un texte en binaire / hexadécimal / ASCII. Pour mesurer la taille d’un texte une fois encapsulé en Base64 pour le transport, voyez le Calculateur de surcoût d'encodage Base64. Et pour estimer la quantité d’information que porte une chaîne plutôt que l’espace qu’elle occupe, le Calculateur d'entropie de Shannon calcule son entropie.
Questions fréquentes (FAQ)
Pourquoi la taille en octets est-elle supérieure au nombre de caractères ?
Un caractère est ce que l’on voit ; un octet est la façon dont il est stocké. En UTF-8, seuls les caractères ASCII de base (lettres latines non accentuées, chiffres, ponctuation courante) tiennent dans un seul octet. Les lettres accentuées comme le é utilisent deux octets, la plupart des autres écritures trois et les emojis quatre. Tout texte contenant des caractères non ASCII occupe donc plus d’octets qu’il n’a de caractères.
En UTF-16, l’écart est encore plus grand pour le texte ASCII, car chaque caractère y utilise au moins deux octets.
Quelle est la différence entre UTF-8 et UTF-16 ?
Tous deux sont des manières de transformer les caractères Unicode en octets. UTF-8 utilise une largeur variable de un à quatre octets par caractère et reste compatible avec l’ASCII, ce qui en fait l’encodage dominant sur le web et dans les fichiers. UTF-16 utilise deux octets pour la plupart des caractères et quatre pour les rares situés au-delà du plan multilingue de base (comme les emojis) ; c’est la représentation en mémoire courante de langages comme Java, C# et JavaScript.
Pour un texte majoritairement latin, UTF-8 est plus compact ; pour des textes dominés par les écritures d’Asie de l’Est, les deux sont souvent comparables.
Combien d’octets occupe un caractère ?
En UTF-8, cela dépend du point de code : U+0000–U+007F (ASCII) un octet, U+0080–U+07FF (accents latins, grec, cyrillique, hébreu, arabe) deux octets, U+0800–U+FFFF (la plupart des écritures CJC et autres) trois octets, et U+10000 et au-delà (emojis, caractères rares) quatre octets.
En UTF-16, ces mêmes caractères occupent deux octets jusqu’à U+FFFF et quatre au-delà, où ils sont stockés sous forme de paire de substitution (surrogate pair).
Quand la taille en octets compte-t-elle ?
Le stockage et la transmission se mesurent en octets, pas en caractères. Une colonne de base de données déclarée VARCHAR(255) peut limiter des octets ou des caractères selon le moteur et le jeu de caractères ; les champs d’API, les limites de longueur des messages et les validations de formulaires sont souvent exprimés en octets.
Connaître la taille en octets UTF-8 aide à prévoir si une valeur tiendra et combien d’espace ou de bande passante elle consommera.
Recommandations
Convertir un texte en binaire / hexadécimal / ASCII
Saisissez n’importe quel texte pour le voir en binaire, en hexadécimal et en codes décimaux de caractère. Le binaire et l’hexadécimal suivent la séquence d’octets UTF-8, tandis que le décimal indique le point de code Unicode de chaque caractère — la valeur ASCII bien connue pour un texte anglais simple.