Lors de la mise en place de systèmes automatisés ou de l'envoi de notifications aux clients, de nombreux chefs d'entreprise et développeurs sont surpris de constater que leurs factures SMS mensuelles sont deux fois plus élevées que prévu. Ce guide complet fournit un tableau indiquant le nombre de caractères nécessaires pour envoyer des SMS contenant des caractères spéciaux, vous aidant ainsi à comprendre comment les changements d'encodage invisibles peuvent gonfler considérablement vos coûts d'envoi.
Pourquoi les caractères spéciaux modifient la longueur et le coût des SMS
Dans les normes de télécommunication, les SMS ne sont pas facturés au nombre brut de mots écrits, mais par "segments." Un segment SMS standard est encodé à l'aide du jeu de caractères GSM-7, qui permet d'intégrer jusqu'à 160 caractères par message. Cependant, dès que vous introduisez un seul caractère en dehors de ce jeu standard—comme un emoji, une lettre cyrillique ou même un guillemet typographique "intelligent" copié de Microsoft Word—l'encodage de l'ensemble du message passe au format UCS-2 (Unicode).
Penser que, sous l'encodage UCS-2, les messages SMS sont limités à 160 caractères, même lorsqu'ils incluent des caractères spéciaux et des emojis est une idée reçue très courante. En réalité, dès qu'un seul caractère non-GSM est détecté, la limite maximale de caractères par segment chute instantanément de 160 caractères à seulement 70 caractères. Si votre message fait 71 caractères et contient un seul emoji, il sera divisé et facturé comme deux segments SMS distincts par les fournisseurs d'API traditionnels comme Twilio ou Plivo.
Comprendre quels caractères spéciaux affectent habituellement les messages est crucial pour maintenir vos coûts opérationnels bas, en particulier si vous gérez une entreprise de services locaux comme une clinique, un salon ou un atelier de réparation qui envoie des rappels de rendez-vous à ses clients.
Explication des encodages GSM-7 et UCS-2
Le GSM-7 est une norme d'encodage de caractères sur 7 bits conçue spécifiquement pour les SMS. Il contient la plupart des caractères latins, des chiffres et de la ponctuation de base. L'UCS-2 est une norme d'encodage sur 16 bits capable de représenter presque tous les caractères de n'importe quelle langue, y compris les emojis, mais elle nécessite deux fois plus de données par caractère. C'est cette surcharge de données qui pousse les réseaux d'opérateurs à réduire la capacité des segments à 70 caractères lorsque l'UCS-2 est activé.
Le tableau ultime de correspondance des caractères spéciaux SMS
Vous trouverez ci-dessous un tableau indiquant le nombre d'emplacements de caractères requis par les caractères spéciaux pour envoyer des SMS. Ce tableau présente les caractères standard GSM-7, les caractères étendus GSM-7 (qui nécessitent 2 emplacements de caractères dans la limite de 160) et les caractères UCS-2 qui imposent la limite stricte de 70 caractères.
| Catégorie de caractères | Exemples de caractères | Bits par caractère | Poids du caractère dans le SMS | Limite max. par segment |
|---|---|---|---|---|
| GSM-7 Basic | A-Z, a-z, 0-9, espaces, ponctuation simple (., !, ?, @, $, etc.) | 7 bits | 1 caractère | 160 caractères |
| GSM-7 Extended | ^, {, }, [, ], ~, |, \, € | 14 bits | 2 caractères | 160 caractères (chaque caractère étendu compte pour 2) |
| UCS-2 (Unicode) | á, í, ó, ñ, ’ (guillemet typographique), emojis (😀), cyrillique, arabe | 16 bits | Force l'ensemble du message en Unicode | 70 caractères |
Comme le montre le tableau, l'utilisation d'un caractère GSM-7 étendu comme une accolade "{" ou un antislash "\" ne force pas l'Unicode, mais compte comme deux caractères dans votre limite de 160 caractères. En revanche, l'utilisation d'un caractère non-GSM comme "á" (souvent utilisé dans les configurations espagnoles de sms y caracteres especiales) ou d'une apostrophe typographique "’" réduira immédiatement la limite de votre segment de message à 70 caractères.
Comment les caractères spéciaux impactent vos coûts de SMS
Pour comprendre los caracteres especiales que impacto tienen en el coste de los sms (l'impact des caractères spéciaux sur le coût des SMS), prenons un exemple pratique. Imaginez que vous gérez une clinique dentaire et que vous envoyez le rappel de rendez-vous suivant :
"Bonjour John, votre rendez-vous est prévu pour demain à 15h00. Veuillez répondre pour confirmer ou nous appeler si vous devez le reporter ! Él"
Ce message comporte 123 caractères. Si vous utilisez la lettre standard "E" au lieu du "É" accentué, le message est envoyé en GSM-7. Il s'intègre parfaitement dans la limite des 160 caractères, vous coûtant exactement 1 segment SMS.
Cependant, à cause du "É" accentué, le message est contraint d'utiliser l'encodage UCS-2. La limite de segment passe alors à 70 caractères. Votre message de 123 caractères est divisé en deux segments (le premier segment fait 67 caractères, le second en fait 56 en raison des en-têtes de segmentation). Les passerelles API traditionnelles vous factureront 2 messages SMS au lieu de 1.
Si vous utilisez des fournisseurs traditionnels, cette segmentation peut doubler ou tripler votre facture mensuelle. C'est pourquoi de nombreuses entreprises recherchent une alternative à Twilio ou consultent un guide des API SMS les moins chères afin d'éviter les surcharges arbitraires basées sur les segments.
Comment éviter les caractères spéciaux dans les SMS ?
Si vous souhaitez conserver vos messages dans la limite des 160 caractères et éviter les coûts imprévus, vous devez nettoyer activement le contenu de vos SMS. Voici des stratégies concrètes sur comment éviter les caractères spéciaux dans les SMS :
- Nettoyer le texte copié-collé : De nombreux modèles de CRM contiennent une ponctuation "intelligente". Par exemple, une apostrophe typographique (’) ou une virgule copiée depuis un éditeur de texte enrichi peut perturber l'envoi ou déclencher le format Unicode. À titre d'exemple concret, certains systèmes d'entreprise internes émettent un avertissement rapide à leurs conseillers : "caractères spéciaux SMS sortants : sachez que tout SMS sortant envoyé doit comporter 250 caractères ou moins. Si votre message a été copié-collé à partir d'un modèle enregistré et contient une virgule (,) ou une apostrophe ('), veuillez supprimer le caractère spécial puis le saisir à nouveau avant de l'envoyer". Remplacer les guillemets ou apostrophes typographiques par des caractères droits standards (') garantit la conformité avec le GSM-7.
- Remplacer les caractères non-GSM par programmation : Si votre système génère des SMS de manière dynamique, implémentez une fonction de translittération pour remplacer des caractères comme "á" par "a", "é" par "e", et "“" par """.
- Gérer les limitations spécifiques aux plateformes : Si vous développez sur des plateformes d'entreprise low-code, soyez attentif à la manière dont elles gèrent l'encodage, comme la gestion des caractères spéciaux dans les intégrations GSM OutSystems, où les variables de texte peuvent automatiquement convertir la ponctuation standard en équivalents Unicode lors de la sérialisation JSON.
Extrait de code Python pour nettoyer le texte des SMS
Voici une fonction Python simple pour éliminer les caractères spéciaux non reconnus par les SMS ou qui imposeraient un encodage UCS-2 coûteux :
import unicodedata
def sanitize_for_gsm7(text):
# Map common smart punctuation to GSM-7 equivalents
replacements = {
'\u2018': "'", '\u2019': "'", # Smart single quotes
'\u201c': '"', '\u201d': '"', # Smart double quotes
'\u2013': '-', '\u2014': '-', # En and em dashes
'\u20ac': 'EUR' # Replace Euro sign if needed
}
for unicode_char, gsm_char in replacements.items():
text = text.replace(unicode_char, gsm_char)
# Normalize accents (e.g., é to e)
normalized = unicodedata.normalize('NFD', text)
gsm7_text = "".join([c for c in normalized if not unicodedata.combining(c)])
return gsm7_text
message = "Hello! Your appointment is confirmed for tomorrow é."
print(sanitize_for_gsm7(message))
# Output: "Hello! Your appointment is confirmed for tomorrow e."
Éliminer l'anxiété liée à l'encodage avec MySMSGate
Pour les entreprises de services locaux, les écoles et les cliniques, se soucier de l'encodage des caractères, des limites de segments et des structures de facturation complexes est un casse-tête inutile. C'est là que le choix entre une passerelle SMS traditionnelle et une API SMS devient crucial.
MySMSGate résout entièrement ce problème. Au lieu de router vos messages via des réseaux d'opérateurs coûteux avec une tarification stricte multipliée par le nombre de segments, MySMSGate transforme votre propre téléphone Android et votre carte SIM en une passerelle SMS.
Voici comment MySMSGate change la donne pour les entreprises soucieuses de leurs coûts :
- Tarification forfaitaire : Nous facturons un tarif fixe de 0,02 $ par message envoyé, quels que soient la longueur, l'encodage des caractères ou les segments. Vous n'avez plus à vous soucier de savoir si un emoji ou un caractère accentué doublera votre facture.
- Utilisez votre propre numéro : Les messages sont envoyés directement depuis la carte SIM de votre téléphone Android. Vos clients voient un numéro de mobile local et reconnaissable, ce qui augmente les taux de réponse et d'ouverture.
- Pas de processus d'enregistrement complexe : Évitez les enregistrements 10DLC complexes, les approbations des opérateurs et les frais mensuels de marque associés aux API traditionnelles comme Twilio.
- Prise en charge du double SIM et multi-appareils : Gérez plusieurs téléphones et cartes SIM à partir d'un seul tableau de bord, en choisissant exactement la ligne à partir de laquelle envoyer pour chaque conversation client.
Foire Aux Questions
Consultez ces questions courantes concernant l'encodage des caractères SMS, les caractères spéciaux et les limites de messages.
Quels caractères spéciaux réduisent la limite de SMS à 70 caractères ?
Tout caractère non inclus dans le jeu de caractères standard GSM-7 forcera l'encodage UCS-2, réduisant la limite à 70 caractères. Cela inclut les emojis, les alphabets non latins (cyrillique, arabe, grec, hébreu) ainsi que certaines lettres accentuées ou ponctuations stylisées (comme les guillemets typographiques).
Les espaces comptent-ils comme des caractères dans un SMS ?
Oui, chaque espace compte comme un seul caractère dans les normes d'encodage GSM-7 et UCS-2.
Pourquoi ma plateforme SMS me facture-t-elle plusieurs messages alors que je n'en ai envoyé qu'un seul ?
Si votre message a dépassé 160 caractères (en GSM-7) ou 70 caractères (en UCS-2), l'opérateur a divisé le message en plusieurs segments. Les API traditionnelles vous facturent par segment, ce qui signifie qu'un seul long message peut facilement vous coûter 2 ou 3 fois le tarif de base.
Comment puis-je tester si mon message SMS contient des caractères spéciaux ?
Vous pouvez utiliser des calculateurs de segments SMS en ligne ou exécuter un script de nettoyage simple dans votre backend pour détecter si votre texte déclenche l'encodage Unicode UCS-2 avant de l'envoyer à votre fournisseur d'API.
Comments (0)
Be the first to comment!