Cuatro formas de contar la misma cadena
Moyoutil calcula el recuento con espacios mediante [...s].length, que cuenta puntos de código. s.length de JavaScript cuenta unidades UTF-16. La secuencia tiene cuatro puntos de código de personas y tres uniones U+200D: siete en total. Su longitud UTF-16 es 11 y TextEncoder produce 25 bytes UTF-8.
const s = "👨👩👧👦";
[...s].length // 7
s.length // 11
new TextEncoder().encode(s).length // 25Límites de texto y de entrada
Unicode UAX #29 describe límites de grafemas extendidos y reglas que evitan dividir secuencias emoji ZWJ. Intl.Segmenter con granularidad grapheme devuelve un segmento en este ejemplo. El límite de grafema no garantiza el dibujo real ni las reglas de todos los formularios.
const segmenter = new Intl.Segmenter("en", {
granularity: "grapheme"
});
[...segmenter.segment(s)].length // 1Unicode UAX #29: Grapheme Cluster Boundaries
Moyoutil no ofrece recuentos separados de grafemas o UTF-16. Al pegar la secuencia en el contador verás 7 con espacios, 7 sin espacios y 25 bytes UTF-8. Comprueba si el límite corresponde a caracteres, bytes o UTF-16 y verifica en el formulario de destino. Eliminar uniones cambia la secuencia original.
Preguntas frecuentes
¿Todos los emoji cuentan como siete caracteres?
No. Este resultado es de la secuencia familiar concreta. Otros puntos de código producen otros recuentos. La cadena vacía tiene cero puntos de código, unidades UTF-16, bytes UTF-8 y grafemas.