Un apóstrofo curvo puede cambiar el precio de un texto con letras latinas comunes. El teléfono muestra prácticamente la misma frase. Bird necesita más segmentos de red para enviarlo.
¿Cuáles son las dos codificaciones?
GSM-7 usa un alfabeto compacto, mientras que UCS-2 representa caracteres fuera de ese alfabeto.
Las letras latinas comunes, los dígitos, la puntuación habitual y algunas letras acentuadas caben en GSM-7. La especificación del alfabeto SMS define ese conjunto.
UCS-2 transporta caracteres fuera de ese conjunto, incluidos comillas curvas y emoji. Algunos emoji cuentan doble para su límite de caracteres.
El texto en chino, japonés, coreano, cirílico, árabe, tailandés e hindi requiere caracteres fuera del alfabeto GSM-7 de Bird.
¿Cómo elige Bird la codificación?
Bird compara todo el cuerpo con GSM-7 y usa UCS-2 si algún carácter no pasa esa prueba.
La codificación se aplica a todo el cuerpo. Un apóstrofo curvo no recibe una codificación distinta de las palabras que lo rodean. Su presencia cambia también la codificación de esas palabras.
Puedes comprobar el resultado con segments.encoding, cuyos valores son GSM_7BIT y UCS2.
¿Cómo cambia la codificación el número de segmentos?
La codificación más amplia deja menos espacio para texto en cada segmento facturable.
Bird usa estos límites:
| Codificación | Segmento único | Cada parte al dividir |
|---|---|---|
| GSM-7 | 160 caracteres | 153 caracteres |
| UCS-2 | 70 caracteres | 67 caracteres |
Estos límites cuentan ciertos caracteres doble, como se indica a continuación. Cada parte reserva espacio de cabecera para que el teléfono pueda unir las partes. SMS concatenados explica la cabecera.
Un cuerpo de 155 letras latinas comunes ocupa un segmento GSM-7. Añade un apóstrofo curvo y el cuerpo de 156 caracteres cambia a UCS-2. Supera 70, así que se aplica el límite multiparte: 156 dividido entre 67 se redondea a tres segmentos.
Bird factura cada segmento por separado. Segmentos SMS explica cómo el recuento se convierte en la cantidad facturable.
¿Qué caracteres requieren atención especial?
La puntuación curva, los emoji y las letras fuera del alfabeto GSM-7 pueden cambiar la codificación de todo el mensaje.
- Los apóstrofos rectos caben en GSM-7; los apóstrofos curvos no.
- Un guion simple cabe; los guiones cortos y largos tipográficos no.
- Tres puntos caben; el carácter de puntos suspensivos
…no. éyücaben;á,íyúno.
GSM-7 cuenta estos caracteres doble: ^, {, }, \, [, ], ~, | y €. El salto de página, un carácter de control que solicita un cambio de página, también cuenta doble. Ochenta signos de euro llenan un segmento.
En UCS-2, un emoji como 😀 cuenta doble. Treinta y cinco llenan un segmento. Añadir uno más supera su capacidad.1
¿Puede la codificación inteligente evitar el cambio?
La codificación inteligente puede reemplazar puntuación compatible cuando todos los caracteres resultantes caben en GSM-7.
La activas por envío con options.smart_encoding, un booleano que acepta true o false, con false como valor predeterminado. Un apóstrofo curvo puede convertirse en un apóstrofo recto. Unos puntos suspensivos pueden convertirse en tres puntos.
Bird deja el cuerpo original sin cambios si queda algún carácter no compatible. El texto en árabe o japonés conserva por tanto los límites de capacidad Unicode. Cambiar el ajuste no puede hacer que esos alfabetos quepan en GSM-7.
Codificación inteligente describe las reglas de reemplazo, y la calculadora de segmentos comprueba el texto antes de enviarlo.
Footnotes
-
Para calculadoras personalizadas, Bird mide GSM-7 en septetos y
UCS2en code units UTF-16. Los caracteres de extensión GSM-7 usan dos septetos. UTF-16 usa dos code units para caracteres fuera del primer bloque de Unicode, incluidos😀. ↩
En resumen
El cuerpo determina la codificación.
Bird usa GSM-7 cuando todos los caracteres caben en su alfabeto y UCS-2 cuando alguno queda fuera.
Algunos caracteres cuentan doble.
El texto en latín simple cabe en 160 caracteres por segmento. El alfabeto más amplio cabe en 70, y algunos emoji cuentan doble.
Dividir reduce la capacidad de cada parte.
Los mensajes multiparte reservan espacio para la cabecera. El texto en latín simple cabe entonces en 153 caracteres por parte. El alfabeto más amplio cabe en 67, y algunos caracteres cuentan doble.
La codificación inteligente requiere una elección explícita.
Bird reemplaza caracteres compatibles solo cuando activas la opción y el resultado completo cabe en GSM-7.