La pregunta «cuánto mide este texto» tiene por lo menos cuatro respuestas: caracteres, puntos de código, bytes UTF-8 y unidades UTF-16. Mientras solo haya ASCII todas coinciden; en cuanto aparecen tildes o emojis se separan.
Justo ahí fallan los límites de caracteres: una columna para 255 bytes admite 255 letras latinas, pero solo 127 vocales acentuadas y apenas 64 emojis.
Cuatro recuentos, cuatro cifras
Un emoji como el de la paella es un punto de código, un carácter para quien lee, cuatro bytes en UTF-8 y dos unidades en UTF-16. Una bandera hecha de dos letras regionales son dos puntos de código pero un solo carácter, y ocho bytes.
En JavaScript la propiedad length cuenta unidades UTF-16, lo que con emojis da de más. En PostgreSQL un límite cuenta caracteres, en MySQL cuenta caracteres o bytes según la definición, y en muchos protocolos cuentan bytes. Quien tome el recuento equivocado corta el texto por la mitad de un carácter.
Por qué sigue apareciendo Latin-1
Sistemas antiguos, interfaces de impresoras y algunos formatos bancarios siguen esperando una codificación de exactamente un byte por carácter. Caben 256 caracteres distintos: suficiente para Europa occidental, pero no para el símbolo del euro en su posición actual ni para el polaco o el turco.
Por eso la calculadora indica si el texto se puede representar en Latin-1 sin pérdidas. Si aparece un aviso de caracteres no representables, la transmisión los sustituirá por interrogantes.