SMS_UCS2_FORCED
Category: sms · Severity: warning · Channel: SMS
The body contains at least one character outside the standard GSM-7 alphabet, which forces the entire message into UCS-2 (Unicode) encoding — cutting the per-segment budget from 160 characters to 70.
What it means
SMS has two text encodings:
- GSM-7 — the standard alphabet. Fits 160 characters in one segment.
- UCS-2 — Unicode, needed for emoji and many accented or "smart" punctuation characters. Fits only 70 characters in one segment (67 when concatenated).
The catch: a single non-GSM character forces the whole message to UCS-2. The most common culprits are invisible:
- Smart quotes:
‘ ’ “ ”(often auto-inserted by word processors) instead of straight quotes' " - Em dashes
—and ellipsis… - Emoji
Synapse Inspect reads the encoding directly from the send-path segmenter (render_sms), so if this finding fires, your delivered message really will be UCS-2.
Why it matters
A 90-character message you expected to send as one GSM-7 segment becomes two UCS-2 segments the moment a smart quote sneaks in — doubling the cost. On a large send, one stray character can multiply your SMS bill several times over.
How to fix it
- Replace smart quotes with straight quotes —
'and"instead of‘ ’ “ ”. This is the single most common fix. - Replace em dashes / ellipsis with GSM-7 equivalents (
-,...). - Replace emoji with GSM-7 text where possible.
- Re-check the segment count after editing — removing the non-GSM character usually restores GSM-7 and may resolve a co-occurring SMS_MULTI_SEGMENT.
- Or accept the UCS-2 cost knowingly if the character is intentional (for example, a required emoji) — this is a
warning, not a block.
A quick way to catch a hidden smart quote: paste the body into a plain-text editor and look for curly quotation marks. Straight quotes are always GSM-7.
Finding context
Related
- SMS_MULTI_SEGMENT — the body spans more than one segment
- SMS quality checks — the full SMS Inspect guide