BroadNet
Encodage SMSJeux de caractères

UCS-2 et SMS Unicode

Mis à jour le 3 min de lectureFondé sur des normes
Réponse directe

UCS-2 est l'encodage 16 bits que le SMS utilise pour tout texte contenant des caractères hors de l'alphabet GSM-7 — écritures non latines, emoji, guillemets courbes. Chaque caractère prend deux octets, si bien qu'un SMS UCS-2 unique contient 70 caractères et que les segments concaténés en contiennent 67 chacun. Un seul caractère hors GSM-7 force tout le message en UCS-2.

§01

Pourquoi le SMS a besoin de l'UCS-2

Le GSM-7 ne couvre que 128 caractères plus un petit jeu d'extension. Tout le reste — arabe, chinois, cyrillique, hébreu, thaï, emoji, et même des caractères typographiques comme les guillemets courbes et les demi-cadratins — n'est pas représentable. Pour ceux-là, le SMS bascule en UCS-2, un encodage 16 bits à largeur fixe (de fait UTF-16 big-endian pour le Plan Multilingue de Base). Il est signalé par data_coding 0x08.

§02

Capacité : 70 et 67

Le champ de données utilisateur du SMS fait 140 octets. À deux octets par caractère, l'UCS-2 tient 70 caractères dans un message unique. Lorsqu'un message est concaténé, le User Data Header de 6 octets consomme de la charge utile, laissant 134 octets — 67 caractères par segment. C'est moins de la moitié de la capacité du GSM-7, d'où l'impact important du choix d'encodage sur le coût.

Capacité par message selon l'encodage
EncodageSMS simplePar segment concaténé
GSM-7 (7-bit)160 caractères153 caractères
Binaire 8 bits140 octets134 octets
UCS-2 (16-bit)70 caractères67 caractères
§03

Ce qui déclenche l'UCS-2

L'encodage est tout ou rien par message : un seul caractère hors GSM-7 force le message entier en UCS-2, faisant chuter la capacité de 160 à 70. Les coupables courants s'introduisent facilement par inadvertance — une apostrophe courbe issue d'un traitement de texte, un tiret cadratin, un emoji, ou un nom non latin. Détecter ces caractères avant l'envoi est le plus grand levier sur le coût du SMS.

Caractères qui forcent l'UCS-2
CatégorieExemples
Emoji😀 ✅ 🚀 ❤️
Ponctuation typographique' ' “ ” – — …
Scripts non latinsالعربية · 中文 · Кириллица · עברית · ไทย
Lettres accentuées non présentes dans GSM-7â ê î ô û ã õ ą ę ř
§04

La subtilité des paires de substitution

L'UCS-2 est strictement 16 bits et couvre le Plan Multilingue de Base de l'Unicode. Les caractères au-delà de U+FFFF — de nombreux emoji modernes, par exemple — sont représentés en UTF-16 par des paires de substitution de deux unités de code 16 bits, si bien qu'un tel emoji consomme quatre octets (deux « caractères » UCS-2). Un message qui ressemble à un seul emoji peut donc compter pour deux dans la limite de 70/67.

FAQ

Questions fréquemment posées

Combien de caractères tiennent dans un SMS Unicode ?

70 caractères dans un message UCS-2 unique, et 67 par segment lorsque le message est concaténé. C'est parce que chaque caractère fait 16 bits (deux octets) face à la limite de 140 octets de charge utile du SMS.

Qu'est-ce qui fait basculer un SMS en UCS-2 ?

Tout caractère unique hors de l'alphabet GSM-7 — un emoji, un guillemet courbe, un tiret cadratin ou du texte non latin — force le message entier en UCS-2. L'encodage est choisi par message, pas par caractère.

L'UCS-2 est-il identique à l'UTF-16 ?

Presque. L'UCS-2 est à 16 bits fixes et couvre le Plan Multilingue de Base. Le SMS traite la charge utile comme de l'UTF-16 big-endian, si bien que les caractères au-delà de U+FFFF (de nombreux emoji) deviennent des paires de substitution et prennent quatre octets.

Pourquoi un emoji compte-t-il parfois pour deux caractères ?

Les emoji au-delà de U+FFFF sont encodés en paires de substitution UTF-16 — deux unités de code 16 bits — si bien qu'un seul glyphe consomme deux des 70 (ou 67) emplacements de caractère UCS-2 disponibles.

Comment éviter d'envoyer de l'UCS-2 par inadvertance ?

Nettoyez l'entrée avant l'envoi : remplacez les guillemets et tirets typographiques par leurs équivalents ASCII, supprimez ou translittérez les accents parasites, et repérez les emoji. Un vérificateur GSM-7/Unicode signale les caractères exacts qui forcent l'UCS-2.

Références

Spécifications sources

Les normes publiées sur lesquelles repose cette page. S'ouvre dans un nouvel onglet.

BNMaintenu par l'équipe d'ingénierie BroadNet·Messagerie de qualité opérateur depuis 2003
Placez-le sur le fil

Conçu avec une véritable liaison SMPP et une API REST.

Demandez un accès de test avec de véritables clés de test : envoyez d’abord à votre propre numéro vérifié, puis passez en production dans plus de 200 pays une fois que votre identité d’expéditeur et vos routes seront approuvées.