Compter la même chaîne de quatre façons
Moyoutil utilise [...s].length pour le nombre avec espaces : cela compte les points de code. s.length en JavaScript compte les unités UTF-16. La séquence contient quatre points de code de personnes et trois jonctions U+200D, soit sept. La longueur UTF-16 est 11 et TextEncoder produit 25 octets UTF-8.
const s = "👨👩👧👦";
[...s].length // 7
s.length // 11
new TextEncoder().encode(s).length // 25Frontières du texte et limites de saisie
Unicode UAX #29 décrit les frontières des graphèmes étendus et les règles évitant de séparer les séquences emoji ZWJ. Intl.Segmenter avec grapheme donne un segment pour cet exemple. Une frontière de graphème ne garantit ni le rendu ni les règles de chaque formulaire.
const segmenter = new Intl.Segmenter("en", {
granularity: "grapheme"
});
[...segmenter.segment(s)].length // 1Unicode UAX #29: Grapheme Cluster Boundaries
Moyoutil n’affiche pas de nombres séparés de graphèmes ou d’unités UTF-16. Collez la séquence dans le compteur : 7 avec espaces, 7 sans espaces et 25 octets UTF-8. Vérifiez si la limite porte sur caractères, octets ou UTF-16, puis contrôlez dans le formulaire destinataire. Supprimer les jonctions modifie la séquence.
Questions fréquemment posées
Chaque emoji compte-t-il pour sept caractères ?
Non. Ce résultat concerne cette séquence familiale précise. D’autres points de code donnent d’autres nombres. Une chaîne vide a zéro point de code, unité UTF-16, octet UTF-8 et graphème.