SMS Character Splitting: GSM-7 vs UCS-2
Diagnose unexpected SMS segment billing spikes and character corruption caused by GSM-7 vs UCS-2 encoding mismatches and Unicode characters.
Systematic Delivery Diagnostic Tree
The GSM 03.38 7-bit Basic Character Set
Standard SMS uses 7-bit encoding, allowing 160 characters per segment. Certain symbols (€, [, ], ~, ^) require 2 bytes from the GSM extension table.
The UCS-2 Unicode Trap (160 to 70 Characters)
Including even a single Unicode character (such as an emoji, smart quote, or non-Latin letter) forces the entire message into 16-bit UCS-2 encoding, cutting segment size from 160 to 70 characters.
User Data Header (UDH) Concatenation Overhead
When messages span multiple segments, carriers require a 6-byte UDH header, reducing GSM-7 segments from 160 to 153 chars, and UCS-2 segments from 70 to 67 chars.
Frequently Asked Questions
Why did my 162-character message get billed as 3 SMS segments?
If your message contains a Unicode character, it flips to UCS-2 encoding (67 chars/segment when multi-part). 162 characters across 67 chars/segment requires 3 billable segments.
How can developers prevent unexpected SMS billing spikes?
Sanitize outbound text to replace smart quotes, em-dashes, and emojis with standard GSM-7 equivalents, and use SMSRiver's SMS Segment Calculator.