När man bygger automatiserade system eller skickar kundaviseringar blir många företagsägare och utvecklare chockade över att deras månatliga SMS-fakturor är dubbelt så höga som förväntat. Denna omfattande guide innehåller en tabell över hur många tecken specialtecken kräver när du skickar SMS, vilket hjälper dig att förstå hur dolda ändringar i teckenkodningen drastiskt kan öka dina meddelandekostnader.

Varför specialtecken ändrar SMS-längd och kostnad

Inom telekomstandarder debiteras inte SMS efter det råa antalet ord du skriver, utan efter "segment". Ett standard-SMS-segment kodas med teckenuppsättningen GSM-7, vilket tillåter upp till 160 tecken per meddelande. Men så fort du introducerar ett enda tecken utanför denna standard – till exempel en emoji, en kyrillisk bokstav eller till och med ett snyggt "smart citattecken" kopierat från Microsoft Word – ändras hela meddelandets kodning till UCS-2 (Unicode).

Att SMS-meddelanden är begränsade till 160 tecken även när de innehåller specialtecken och emojis under UCS-2-kodning är en vanlig missuppfattning. I verkligheten sjunker den maximala teckengränsen per segment omedelbart från 160 tecken till bara 70 tecken så fort ett enda icke-GSM-tecken upptäcks. Om ditt meddelande är 71 tecken långt och innehåller en emoji, kommer det att delas upp och debiteras som två separata SMS-segment av traditionella API-leverantörer som Twilio eller Plivo.

Att förstå vilka specialtecken som vanligtvis påverkar meddelanden är avgörande för att hålla dina driftskostnader låga, särskilt om du driver ett lokalt tjänsteföretag som en klinik, salong eller reparationsverkstad som skickar påminnelser om bokade tider till dina kunder.

Skillnaden mellan GSM-7 och UCS-2-kodning

GSM-7 är en 7-bitars teckenkodningsstandard som är utformad specifikt för SMS. Den innehåller de flesta latinska tecken, siffror och grundläggande skiljetecken. UCS-2 är en 16-bitars kodningsstandard som kan representera nästan alla tecken i alla språk, inklusive emojis, men den kräver dubbelt så mycket data per tecken. Denna databelastning är anledningen till att mobiloperatörernas nätverk sänker segmentkapaciteten till 70 tecken när UCS-2 aktiveras.

Den ultimata tabellen över SMS-specialtecken

Nedan visas en tabell över hur många tecken specialtecken kräver när du skickar SMS. Tabellen visar standard GSM-7-tecken, utökade GSM-7-tecken (som kräver 2 teckenutrymmen inom gränsen på 160 tecken) och UCS-2-tecken som tvingar fram den strikta gränsen på 70 tecken.

TeckenkategoriExempel på teckenBitar per teckenTecknets vikt i SMSMax segmentgräns
GSM-7 BasicA-Z, a-z, 0-9, mellanslag, enkla skiljetecken (., !, ?, @, $, etc.)7 bitar1 tecken160 tecken
GSM-7 Extended^, {, }, [, ], ~, |, \, €14 bitar2 tecken160 tecken (varje utökat tecken räknas som 2)
UCS-2 (Unicode)á, í, ó, ñ, ’ (smart quote/typografiskt citattecken), emojis (😀), kyrilliska, arabiska16 bitarTvingar hela meddelandet till Unicode70 tecken

Som visas i tabellen tvingar inte ett utökat GSM-7-tecken som en klammerparentes "{" eller ett omvänt snedstreck "\" fram Unicode, men det räknas som två tecken mot din gräns på 160 tecken. Men att använda ett icke-GSM-tecken som "á" (används ofta i spanska konfigurationer för sms y caracteres especiales) eller en typografisk apostrof "’" kommer omedelbart att minska din segmentgräns för meddelandet till 70 tecken.

Hur specialtecken påverkar dina SMS-kostnader

För att förstå los caracteres especiales que impacto tienen en el coste de los sms (vilken inverkan specialtecken har på kostnaden för SMS), låt oss titta på ett praktiskt exempel. Föreställ dig att du driver en tandläkarklinik och skickar följande påminnelse om en bokad tid:

"Hej John, din tid är bokad till imorgon kl. 15.00. Svara för att bekräfta eller ring oss om du behöver boka om! Él"

Detta meddelande är 123 tecken långt. Om du använder ett vanligt "E" istället för det accentuerade "É", skickas meddelandet i GSM-7. Det ryms enkelt inom gränsen på 160 tecken och kostar dig exakt 1 SMS-segment.

Men på grund av det accentuerade "É" tvingas meddelandet till UCS-2. Segmentgränsen är nu 70 tecken. Ditt meddelande på 123 tecken delas upp i två segment (det första segmentet är 67 tecken, det andra är 56 tecken på grund av segmenteringshuvuden). Traditionella API-gateways kommer att debitera dig för 2 SMS istället för 1.

Om du använder traditionella leverantörer kan denna segmentering fördubbla eller tredubbla din månatliga faktura. Det är därför många företag letar efter ett Twilio-alternativ eller läser en guide för billigaste SMS-API för att undvika godtyckliga segmentbaserade tilläggsavgifter.

Hur undviker jag specialtecken i SMS?

Om du vill hålla dina meddelanden inom gränsen på 160 tecken och undvika oväntade kostnader måste du aktivt rensa din SMS-data. Här är konkreta strategier för hur man undviker specialtecken i SMS:

  1. Rensa kopierad text: Många CRM-mallar innehåller "smart" teckensättning. Till exempel kan en kopierad apostrof (’) eller ett kommatecken från en textredigerare förhindra ren leverans eller utlösa Unicode. Som ett verkligt exempel utfärdar vissa interna företagssystem en kort varning till rådgivare: "utgående sms specialtecken observera att alla utgående sms som skickas måste vara 250 tecken eller färre. om ditt meddelande har kopierats och klistrats in från en sparad mall och innehåller ett kommatecken (,) eller en apostrof ('), ta bort specialtecknet och skriv in det igen innan du skickar". Att ersätta smarta citattecken med vanliga raka citattecken (') säkerställer GSM-7-kompatibilitet.
  2. Ersätt icke-GSM-tecken programmatiskt: Om ditt system genererar SMS dynamiskt kan du implementera en translittereringsfunktion för att byta ut tecken som "á" till "a", "é" till "e" och "“" till """.
  3. Hantera plattformsspecifika begränsningar: Om du utvecklar på low-code-plattformar för företag bör du vara medveten om hur de hanterar kodning, till exempel vid hantering av specialtecken i GSM OutSystems-integrationer, där textvariabler automatiskt kan konvertera standardskiljetecken till Unicode-motsvarigheter under JSON-serialisering.

Python-kodsnutt för att rensa SMS-text

Här är en enkel Python-funktion för att rensa bort specialtecken som SMS inte känner igen eller som skulle tvinga fram dyr UCS-2-kodning:

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."

Slipp kodningsångest med MySMSGate

För lokala tjänsteföretag, skolor och kliniker är det en onödig huvudvärk att oroa sig för teckenkodning, segmentgränser och komplexa prissättningsmodeller. Det är här valet mellan en traditionell SMS-gateway vs SMS-API blir avgörande.

MySMSGate löser detta problem helt och hållet. Istället för att dirigera dina meddelanden genom dyra mobilnätverk med strikt segmentbaserad prissättning, förvandlar MySMSGate din egen Android-telefon och ditt SIM-kort till en SMS-gateway.

Så här förändrar MySMSGate spelplanen för kostnadsmedvetna företag:

  • Fast pris: Vi tar ut ett fast pris på 0,02 USD per skickat meddelande, oavsett längd, teckenkodning eller segment. Du behöver inte oroa dig för om en emoji eller ett accentuerat tecken kommer att fördubbla din faktura.
  • Använd ditt eget nummer: Meddelanden skickas direkt från din Android-telefons SIM-kort. Dina kunder ser ett lokalt, igenkännbart mobilnummer, vilket ökar svars- och öppningsfrekvensen.
  • Inga krångliga registreringar: Undvik komplexa 10DLC-registreringar, operatörsgodkännanden och månatliga varumärkesavgifter som är förknippade med traditionella API:er som Twilio.
  • Stöd för dubbla SIM-kort och flera enheter: Hantera flera telefoner och SIM-kort från en enda instrumentpanel, och välj exakt vilken linje du vill skicka från för varje kundkonversation.

Vanliga frågor

Här hittar du svar på vanliga frågor om SMS-teckenkodning, specialtecken och meddelandegränser.

Vilka specialtecken sänker SMS-gränsen till 70 tecken?

Alla tecken som inte ingår i standardteckenuppsättningen GSM-7 tvingar fram UCS-2-kodning, vilket sänker gränsen till 70 tecken. Detta inkluderar emojis, icke-latinska alfabet (kyrilliska, arabiska, grekiska, hebreiska) samt vissa accentuerade bokstäver eller typografiska skiljetecken (som smarta citattecken).

Räknas mellanslag som tecken i ett SMS?

Ja, varje mellanslag räknas som ett tecken i både GSM-7 och UCS-2-kodningsstandarderna.

Varför debiterar min SMS-plattform mig för flera meddelanden när jag bara skickade ett?

Om ditt meddelande överskred 160 tecken (i GSM-7) eller 70 tecken (i UCS-2), delade operatören upp meddelandet i flera segment. Traditionella API:er debiterar dig per segment, vilket innebär att ett enda långt meddelande enkelt kan kosta dig 2 eller 3 gånger baspriset.

Hur kan jag testa om mitt SMS-meddelande innehåller specialtecken?

Du kan använda segmentkalkylatorer för SMS online eller köra ett enkelt rensningsskript i din backend för att upptäcka om din text utlöser UCS-2 Unicode kodning innan du skickar den till din API-leverantör.