Si vous avez remarqué que vos factures de SMS s'envolent parce que votre système envoie plusieurs SMS à cause de l'Unicode, savoir comment y remédier est probablement votre priorité absolue. Un simple guillemet typographique ou un émoji accidentel peut instantanément transformer un SMS standard et économique en trois segments facturés séparément, vidant ainsi votre budget marketing et opérationnel.

Étape 1 : Comprendre pourquoi l'Unicode impose plusieurs segments de SMS

Pour empêcher votre passerelle SMS de diviser vos messages en plusieurs segments facturés, vous devez d'abord comprendre le fonctionnement technique de l'encodage des SMS. Les réseaux de télécommunications traditionnels utilisent deux normes d'encodage principales pour les messages texte : GSM-7 et UCS-2 (Unicode).

Avec l'encodage standard GSM-7, un seul segment de SMS peut contenir jusqu'à 160 caractères. Ce jeu de caractères comprend les lettres latines standards (A-Z, a-z), les chiffres (0-9) et quelques signes de ponctuation courants. Cependant, dès que le contenu de votre message contient ne serait-ce qu'un seul caractère en dehors de ce jeu de base — comme un guillemet courbe (’), une lettre accentuée (á, é, ö) ou un émoji — l'encodage de tout le message bascule automatiquement en UCS-2.

Lorsque votre message bascule en encodage Unicode UCS-2, la limite de caractères par segment chute de 160 caractères à seulement 70 caractères. Si votre message fait 140 caractères, il tient facilement dans un seul segment GSM-7. Mais en UCS-2, ces mêmes 140 caractères nécessitent deux segments distincts. Les fournisseurs d'API traditionnels comme Twilio, Vonage et MessageBird vous facturent par segment, ce qui signifie que votre coût double ou triple instantanément pour un seul message.

Norme d'encodageCaractères max (1 segment)Caractères max (multi-segments)Caractères déclencheurs courants
GSM-7160 caractères153 caractères par segmentLettres anglaises standards, chiffres, ponctuation de base
UCS-2 (Unicode)70 caractères67 caractères par segmentÉmojis, guillemets typographiques (“, ”), alphabets non latins, accents (é, ñ)

Ce comportement explique pourquoi votre application envoie plusieurs SMS à cause de l'Unicode. Pour résoudre ce problème, vous devez soit nettoyer rigoureusement vos données d'entrée, soit passer à une API SMS à bas coût qui ne vous pénalise pas pour l'envoi de messages texte plus longs et modernes.

Étape 2 : Supprimer ou remplacer les caractères Unicode dans votre code

Le moyen le plus direct, au niveau du code, pour éviter le fractionnement Unicode est de nettoyer le contenu de votre message avant de l'envoyer à votre passerelle SMS. Vous pouvez écrire une fonction utilitaire dans votre backend pour supprimer les caractères non-GSM-7 ou les remplacer par leurs équivalents GSM-7 les plus proches.

Voici comment vous pouvez implémenter cela dans différents langages de programmation en utilisant des expressions régulières simples et des règles de remplacement de chaînes.

Implémentation en Python

En Python, vous pouvez utiliser le module unicodedata pour normaliser vos chaînes, en supprimant les accents et en convertissant les guillemets typographiques en guillemets droits standards :

import unicodedata
import re

def clean_for_gsm7(text):
    # Replace common smart quotes and dashes
    replacements = {
        u'\u201c': '"', u'\u201d': '"',
        u'\u2018': "'", u'\u2019': "'",
        u'\u2013': '-', u'\u2014': '-'
    }
    for unicode_char, gsm_char in replacements.items():
        text = text.replace(unicode_char, gsm_char)
    
    # Normalize and strip accents
    normalized = unicodedata.normalize('NFKD', text)
    ascii_text = normalized.encode('ascii', 'ignore').decode('utf-8')
    
    # Remove any remaining non-GSM-7 characters
    gsm7_regex = re.compile(r'[^\n\r a-zA-Z0-9^{}\\\[~\Right]|€$@!"#%&\'()*+,-./:;<=>?_]')
    cleaned_text = gsm7_regex.sub('', ascii_text)
    
    return cleaned_text

message = "Hello! Your appointment is scheduled for tomorrow at 3 PM. See you there! 😊"
print(clean_for_gsm7(message))
# Output: "Hello! Your appointment is scheduled for tomorrow at 3 PM. See you there! "

Implémentation en Node.js (JavaScript)

Pour les développeurs JavaScript, vous pouvez utiliser une approche similaire avec des expressions régulières pour supprimer tous les caractères qui ne sont pas conformes à la norme GSM-7 :

function sanitizeToGSM7(text) {
    const smartReplacements = {
        '[\u201c\u201d]': '"',
        '[\u2018\u2019]': "'",
        '\u2013': '-',
        '\u2014': '-'
    };

    let cleaned = text;
    for (const [pattern, replacement] of Object.entries(smartReplacements)) {
        cleaned = cleaned.replace(new RegExp(pattern, 'g'), replacement);
    }

    // Remove accents
    cleaned = cleaned.normalize('NFD').replace(/[\u0300-\u036f]/g, '');

    // Keep only GSM-7 compatible characters
    const gsm7Pattern = /[^\n\r a-zA-Z0-9^{}\\\[~\Right]|€$@!"#%&\'()*+,-.\/:;<=>?_]/g;
    return cleaned.replace(gsm7Pattern, '');
}

const rawMessage = "Your order is ready for pickup! 🚗";
console.log(sanitizeToGSM7(rawMessage)); 
// Output: "Your order is ready for pickup! "

Étape 3 : Convertir les guillemets typographiques et les accents en équivalents GSM-7

Bien souvent, les caractères Unicode s'immiscent dans vos messages lors de copier-coller depuis des traitements de texte comme Microsoft Word ou Google Docs. Ces logiciels convertissent automatiquement les guillemets droits standards (' et ") en guillemets courbes dits « typographiques » (, , , ).

Pour éviter que votre système n'envoie plusieurs SMS à cause de ces modifications mineures, vous pouvez configurer une table de correspondance de caractères. Cela vous permet de conserver la lisibilité de votre texte sans déclencher la limite de 70 caractères de l'UCS-2.

  • Convertir et en apostrophe standard '
  • Convertir et en guillemet standard "
  • Convertir les tirets cadratins () et demi-cadratins () en tirets standards (-)
  • Convertir les caractères accentués comme é, á, í en leurs équivalents sans accent e, a, i

En associant explicitement ces caractères, vous préservez l'aspect professionnel de vos messages tout en restant strictement dans la limite d'un seul segment. C'est particulièrement utile pour les entreprises de services locaux comme les cliniques dentaires, les ateliers de réparation et les écoles de langues, qui doivent maintenir des coûts opérationnels bas tout en envoyant des rappels de rendez-vous automatisés.

Étape 4 : Passer à une passerelle SMS avec facturation forfaitaire par segment

Bien que la suppression des caractères Unicode soit une solution de contournement fonctionnelle, elle vous oblige à faire des compromis sur l'image de marque de votre entreprise. En 2026, les clients s'attendent à une communication naturelle, qui inclut souvent des émojis, des accents locaux et une mise en forme professionnelle. Restreindre vos communications clients aux caractères ASCII de base uniquement pour éviter des factures de télécommunications élevées n'est plus nécessaire.

Les agrégateurs cloud traditionnels comme Twilio, Plivo et MessageBird appliquent une facturation stricte par segment car ils doivent payer des frais d'opérateur pour chaque paquet de données. De plus, l'utilisation de ces plateformes historiques nécessite de passer par des processus complexes d'enregistrement A2P SMS, d'approbations d'opérateurs 10DLC et de payer des frais mensuels récurrents.

Une alternative de plus en plus populaire consiste à utiliser une passerelle SMS basée sur Android comme MySMSGate. MySMSGate transforme vos propres téléphones Android et cartes SIM en appareils d'envoi de SMS entièrement fonctionnels. Comme vos messages sont envoyés directement via la carte SIM de votre téléphone (qui comprend généralement des forfaits SMS locaux illimités ou très avantageux), vous contournez entièrement la facturation traditionnelle basée sur les segments.

MySMSGate facture un tarif fixe de $0.02 par SMS envoyé, que votre message contienne des caractères Unicode, des émojis ou s'étende sur plusieurs segments. Il n'y a pas d'abonnement mensuel, pas de contrat, ni de délais d'enregistrement auprès des opérateurs. Si un message n'est pas distribué, votre solde est automatiquement remboursé.

Si vous recherchez les meilleures alternatives d'API SMS pour comparer les SMS en masse, la fiabilité et les taux de délivrabilité, passer à une passerelle SMS Android résout l'intégralité du problème de facturation de l'Unicode à la source.

Étape 5 : Configurer la gestion des SMS depuis plusieurs numéros de téléphone

Pour les entreprises de services locaux opérant sur plusieurs sites, la gestion de l'infrastructure de messagerie peut rapidement devenir complexe. Si vous gérez plusieurs succursales — comme cinq cliniques dentaires ou trois ateliers de réparation automobile — vous avez besoin d'un système qui prend en charge la gestion des SMS depuis plusieurs numéros de téléphone à partir d'une interface unique et centralisée.

Avec MySMSGate, you can connect an unlimited number of Android devices to a single account dashboard. This allows you to manage multiple numbers seamlessly:

  1. Créez votre compte : Inscrivez-vous sur MySMSGate pour récupérer votre clé API.
  2. Installez l'application Android : Téléchargez l'application compagnon MySMSGate sur vos appareils Android.
  3. Connectez-vous via QR Code : Scannez le QR code affiché sur votre tableau de bord web à l'aide de l'appareil photo de chaque téléphone. Cela associe instantanément les appareils à votre compte central sans avoir à saisir de clés API complexes.
  4. Gérez les cartes double SIM : Si vos téléphones prennent en charge le double SIM, vous pouvez choisir précisément depuis quel emplacement SIM envoyer vos messages, directement depuis votre tableau de bord ou via votre appel API.

Cette structure multi-appareils vous permet d'acheminer les notifications sortantes via des numéros locaux que vos clients reconnaissent déjà, ce qui améliore considérablement les taux d'ouverture et de réponse. Toutes les réponses entrantes sont automatiquement redirigées vers votre tableau de bord Web Conversations, permettant une discussion bidirectionnelle en temps réel directement depuis votre ordinateur.

Étape 6 : Envoyer votre premier SMS sécurisé contre l'Unicode via l'API REST

Si vous êtes un développeur indépendant, un freelance ou un chef d'entreprise technique, l'intégration de MySMSGate dans votre logiciel est extrêmement simple. La plateforme propose une API REST claire avec un point de terminaison unique qui vous permet de déclencher des notifications SMS avec une configuration minimale.

Voici un exemple de requête POST pour envoyer un SMS à l'aide de cURL. Notez que vous pouvez inclure des émojis et des caractères Unicode spéciaux sans vous soucier de l'inflation du coût par segment :

curl -X POST https://mysmsgate.net/api/v1/send \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+1234567890",
    "message": "Your vehicle is ready for pickup! 🚗 Please reply to this message if you have any questions.",
    "device_id": "your_device_id",
    "sim_slot": 1
  }'

Pour des implémentations plus détaillées dans d'autres langages, vous pouvez explorer la documentation officielle de l'API MySMSGate, qui comprend des extraits de code prêts pour la production pour Python, Node.js, PHP, Go et Ruby, ainsi que des connecteurs prédéfinis pour les plateformes d'automatisation comme Zapier, Make.com et n8n.

Foire Aux Questions

Voici des réponses aux questions les plus courantes concernant le fractionnement des SMS Unicode, les limites de caractères et la facturation.

Pourquoi un seul émoji fait-il que mon SMS est envoyé en plusieurs messages ?

Les messages texte standards utilisent l'encodage GSM-7, qui permet d'envoyer jusqu'à 160 caractères par segment. Les émojis ne font pas partie du jeu de caractères GSM-7. Lorsque vous ajoutez un émoji, l'opérateur doit basculer l'intégralité du message vers l'encodage UCS-2 (Unicode), ce qui abaisse la limite du segment à 70 caractères. Si votre message dépasse 70 caractères, il est divisé en plusieurs segments, et les API traditionnelles vous facturent chaque segment.

Comment puis-je vérifier si mon texte contient de l'Unicode avant de l'envoyer ?

Vous pouvez utiliser des calculateurs de longueur de SMS en ligne ou exécuter une simple recherche par expression régulière dans votre code pour détecter les caractères non-GSM-7. Vous pouvez également écrire des scripts de validation qui signalent ou suppriment les caractères non-GSM-7 de votre base de données avant de les transmettre à une file d'attente de SMS sortants.

MySMSGate facture-t-il un supplément pour l'Unicode ou les messages multi-segments ?

Non. Contrairement aux API traditionnelles comme Twilio ou Vonage qui facturent au segment de 160 ou 70 caractères, MySMSGate facture un tarif fixe de 0,02 $ par message envoyé. Comme le message est acheminé directement via la carte SIM de votre téléphone Android, vous ne payez pas par segment, ce qui vous permet d'envoyer des émojis et des messages longs sans vous soucier de frais cachés.

Ai-je besoin d'un enregistrement auprès d'un opérateur ou d'un enregistrement 10DLC pour utiliser une passerelle SMS Android ?

Non. Étant donné que MySMSGate achemine les messages via votre propre téléphone Android physique et votre carte SIM, vos messages sont envoyés en tant que trafic standard de personne à personne (P2P). Cela signifie que vous n'avez pas besoin de passer par un enregistrement A2P 10DLC complexe, coûteux et fastidieux, ni d'attendre les approbations des opérateurs.