Une apostrophe typographique peut changer le prix d'un texte composé par ailleurs de lettres latines ordinaires. Le téléphone affiche quasiment la même phrase. Bird a besoin de plus de segments réseau pour l'envoyer.
Quels sont les deux encodages ?
GSM-7 utilise un alphabet compact, tandis que UCS-2 représente les caractères en dehors de cet alphabet.
Les lettres latines ordinaires, les chiffres, la ponctuation courante et certaines lettres accentuées appartiennent à GSM-7. La spécification de l'alphabet SMS définit cet ensemble.
UCS-2 transporte les caractères en dehors de cet ensemble, y compris les guillemets typographiques et les emoji. Certains emoji comptent double dans sa limite de caractères.
Les textes en chinois, japonais, coréen, cyrillique, arabe, thaï et hindi nécessitent des caractères en dehors de l'alphabet GSM-7 de Bird.
Comment Bird choisit-il l'encodage ?
Bird teste le corps entier par rapport à GSM-7 et utilise UCS-2 si un caractère échoue à ce test.
L'encodage s'applique au corps entier. Une apostrophe typographique ne reçoit pas un encodage distinct des mots qui l'entourent. Sa présence change aussi l'encodage de ces mots.
Vous pouvez vérifier le résultat via segments.encoding, dont les valeurs sont GSM_7BIT et UCS2.
Comment l'encodage modifie-t-il le nombre de segments ?
L'encodage élargi laisse moins de place au texte dans chaque segment facturable.
Bird utilise ces limites :
| Encodage | Segment unique | Chaque partie après découpage |
|---|---|---|
| GSM-7 | 160 caractères | 153 caractères |
| UCS-2 | 70 caractères | 67 caractères |
Ces limites comptent certains caractères double, comme indiqué ci-dessous. Chaque partie découpée réserve de l'espace pour un en-tête permettant au téléphone de réassembler les parties. SMS concaténés explique cet en-tête.
Un corps de 155 lettres latines ordinaires occupe un segment GSM-7. Ajoutez une apostrophe typographique et le corps de 156 caractères passe en UCS-2. Il dépasse 70, donc la limite multipartite s'applique : 156 divisé par 67 arrondi au supérieur donne trois segments.
Bird facture chaque segment séparément. Segments SMS explique comment le nombre de segments devient la quantité facturable.
Quels caractères demandent une attention particulière ?
La ponctuation typographique, les emoji et les lettres en dehors de l'alphabet GSM-7 peuvent changer l'encodage du message entier.
- Les apostrophes droites appartiennent à GSM-7 ; les apostrophes typographiques non.
- Le trait d'union simple est accepté ; les tirets demi-cadratin et cadratin typographiques ne le sont pas.
- Trois points successifs sont acceptés ; le caractère unique de points de suspension
…ne l'est pas. éetüsont acceptés ;á,íetúne le sont pas.
GSM-7 compte ces caractères double : ^, {, }, \, [, ], ~, | et €. Le saut de page, un caractère de contrôle demandant un changement de page, compte aussi double. Quatre-vingts signes euro remplissent donc un segment.
En UCS-2, un emoji tel que 😀 compte double. Trente-cinq remplissent un segment. En ajouter un autre dépasse sa capacité.1
L'encodage intelligent peut-il éviter le basculement ?
L'encodage intelligent peut remplacer la ponctuation prise en charge quand chaque caractère résultant appartient à GSM-7.
Vous l'activez par envoi avec options.smart_encoding, un booléen acceptant true ou false, avec false par défaut. Une apostrophe typographique peut devenir une apostrophe droite. Des points de suspension peuvent devenir trois points.
Bird laisse le corps original inchangé si un caractère non pris en charge subsiste. Le texte en arabe ou en japonais conserve donc les limites de capacité Unicode. Modifier ce paramètre ne peut pas faire tenir ces écritures dans GSM-7.
Smart encoding décrit les règles de remplacement, et le calculateur de segments vérifie le texte avant l'envoi.
Footnotes
-
Pour les calculateurs personnalisés, Bird mesure GSM-7 en septets et
UCS2en unités de code UTF-16. Les caractères d'extension GSM-7 utilisent deux septets. UTF-16 utilise deux unités de code pour les caractères en dehors du premier bloc Unicode, y compris😀. ↩
En bref
Le corps détermine l'encodage.
Bird utilise GSM-7 quand chaque caractère appartient à son alphabet et UCS-2 quand un caractère en sort.
Certains caractères comptent double.
Le texte latin simple tient en 160 caractères par segment. L'alphabet élargi en tient 70, certains emoji comptant double.
Le découpage réduit la capacité de chaque partie.
Les messages multipartites réservent de l'espace pour l'en-tête. Le texte latin simple tient alors en 153 caractères par partie. L'alphabet élargi en tient 67, certains caractères comptant double.
L'encodage intelligent nécessite un choix explicite.
Bird remplace les caractères pris en charge uniquement quand vous activez l'option et que le résultat entier tient dans GSM-7.