Comment sont comptés les mots et les caractères
Collez le même texte dans deux applications et vous obtiendrez peut-être deux résultats différents. Aucun n’est forcément faux : ils ne comptent pas la même chose. Ce guide explique les unités courantes et pourquoi les nombres diffèrent.
Quatre façons de compter les caractères
Les ordinateurs stockent le texte en Unicode, et un « caractère » peut se mesurer à plusieurs niveaux :
- Les groupes de graphèmes correspondent à ce qu’un lecteur perçoit comme un seul caractère, par exemple « é », « 한 » ou « 👍🏽 ».
- Les points de code sont les valeurs Unicode individuelles. Un caractère visible peut être composé de plusieurs points de code.
- Les unités de code UTF-16 sont ce que comptent la propriété
lengthde JavaScript et plusieurs autres langages de programmation. Les caractères situés hors du plan multilingue de base, dont la plupart des emoji, occupent deux unités. - Les octets UTF-8 sont ce que stocke un fichier ou une colonne de base de données. Les lettres ASCII occupent un octet, les lettres latines accentuées généralement deux, les caractères coréens, chinois et japonais généralement trois, et les emoji quatre ou plus.
| Texte | Graphèmes | Points de code | Unités UTF-16 | Octets UTF-8 |
|---|---|---|---|---|
| a | 1 | 1 | 1 | 1 |
| é (un seul point de code) | 1 | 1 | 1 | 2 |
| é (e + accent combinant) | 1 | 2 | 2 | 3 |
| 한 (syllabe coréenne) | 1 | 1 | 1 | 3 |
| 👍 | 1 | 1 | 2 | 4 |
| 👍🏽 (avec couleur de peau) | 1 | 2 | 4 | 8 |
| 👨👩👧 (emoji famille) | 1 | 5 | 8 | 18 |
Accents combinants et texte coréen
Certains caractères peuvent être stockés de plusieurs façons. « é » peut être un seul point de code précomposé ou un simple « e » suivi d’un accent combinant. Les deux formes s’affichent de façon identique, mais la seconde compte un point de code et un octet de plus. Le texte copié depuis certains systèmes, par exemple les noms de fichiers sur certains systèmes d’exploitation, peut utiliser la forme décomposée.
Le coréen pose le même problème. Une syllabe comme « 한 » est généralement stockée sous forme d’un seul point de code, mais elle peut aussi s’écrire avec des jamo séparés (ㅎ, ㅏ, ㄴ) qui se combinent à l’écran. Un compteur fondé sur les graphèmes affiche 1 dans les deux cas, tandis qu’un comptage des points de code affiche 1 ou 3. La normalisation Unicode (NFC ou NFD) convertit d’une forme à l’autre.
Compter les mots dans différentes langues
En anglais, découper le texte aux espaces donne un nombre de mots raisonnable, même si les mots composés avec trait d’union, les contractions, les nombres et les URL peuvent être comptés différemment selon les outils.
Le chinois, le japonais et le thaï s’écrivent généralement sans espaces entre les mots : un découpage aux espaces compterait donc une phrase entière comme un seul mot. Les meilleurs compteurs utilisent un segmenteur de mots qui s’appuie sur des dictionnaires et des règles. Le compteur de LeedyBox utilise Intl.Segmenter du navigateur, qui identifie les limites de mots pour de nombreuses langues. Dans ces langues, la segmentation relève de la convention : les résultats peuvent donc différer de ceux d’autres outils ou d’un comptage manuel. Pour cette raison, certains éditeurs de ces langues comptent les caractères plutôt que les mots.
Pourquoi les applications et les sites comptent différemment
Une limite comme « 280 caractères maximum » ou « VARCHAR(255) » peut se mesurer en graphèmes, en points de code, en unités UTF-16 ou en octets, selon le système. Certains services comptent aussi un lien comme une longueur fixe ou considèrent que certaines écritures pèsent plus lourd. Lorsque vous devez respecter une limite, renseignez-vous sur l’unité utilisée par le système cible et comparez avec ce nombre. Le compteur de LeedyBox affiche côte à côte les graphèmes, les unités UTF-16 et les octets UTF-8 et comprend un vérificateur de limite, pour que vous puissiez voir où vous en êtes dans l’unité pertinente.
Lignes, paragraphes et sauts de ligne
Le nombre de lignes dépend de la façon dont les sauts de ligne sont stockés. Windows utilise généralement deux caractères (CR LF), tandis que Linux et macOS en utilisent un (LF). Un outil qui compte les caractères bruts peut compter un saut de ligne Windows comme deux caractères. Un saut de ligne final à la fin du texte peut compter ou non comme une ligne vide supplémentaire. Les paragraphes sont généralement comptés comme des blocs séparés par une ou plusieurs lignes vides : un simple saut de ligne à l’intérieur d’un paragraphe n’en commence donc pas un nouveau.
Estimation du temps de lecture
Le temps de lecture se calcule en divisant le nombre de mots par une vitesse de lecture supposée. La vitesse réelle varie selon le lecteur, la langue et le degré de technicité du texte, et le nombre de mots dépend lui-même de la segmentation. Considérez l’estimation comme un repère approximatif pour planifier plutôt que comme une mesure.
Questions fréquentes
Pourquoi un emoji compte-t-il pour 2 caractères dans certaines applications ?
Ces applications comptent les unités de code UTF-16. La plupart des emoji sont stockés sur deux unités, et les emoji avec une couleur de peau ou combinant plusieurs personnes en utilisent davantage.
Quel comptage utiliser pour la limite d’une colonne de base de données ?
Consultez la documentation de la base de données. Certaines limites sont exprimées en caractères et d’autres en octets : le nombre d’octets UTF-8 est donc souvent celui à comparer.
Le compteur envoie-t-il mon texte quelque part ?
Le compteur de mots et de caractères de LeedyBox fonctionne dans votre navigateur : le texte que vous collez est donc compté sur votre appareil.