Unicode OTP Not Sending? Encoding Issue Fix
Unicode (Hindi, Tamil, etc.) OTPs failing to send: GSM-7 vs UCS-2 encoding, DLT template language registration, and why a single accented character breaks delivery.
StartMessaging Team
Engineering
A single non-GSM-7 character can break your OTP delivery. This guide explains the encoding rules and the registration step that most teams miss.
Why Unicode OTPs Fail
- Template registered as GSM-7 but body has Unicode chars.
- Operator scrubber rejects on encoding mismatch.
- Multi-part fragmentation drops on some carriers.
GSM-7 vs UCS-2
- GSM-7: 160 chars, basic Latin.
- UCS-2: 70 chars, full Unicode.
- One Unicode char anywhere = whole SMS becomes UCS-2.
DLT Language Registration
Hindi / Tamil / regional templates need a separate DLT registration. See our regional-language SMS guide.
Invisible Unicode Characters
- Curly quotes from copy-paste.
- Em dashes from auto-correct.
- Zero-width joiners.
- Non-breaking spaces.
Run your template through a GSM-7 validator before submission.
Fixes
- Replace curly quotes with straight quotes.
- Use ASCII-only template body if possible.
- For Hindi templates, register them explicitly under regional category.
FAQ
StartMessaging handles encoding consistency on the template side; your body stays GSM-7 unless you explicitly opt into Unicode.
Related Articles
How to send OTPs in Hindi, Tamil, Bengali, Marathi and other Indian languages: Unicode SMS segments, character costs, template tips, and when to use English instead.
When your OTP SMS exceeds 160 characters: GSM-7 vs UCS-2 encoding, multi-part SMS, the cost impact, and template tightening tactics.
Learn how to write DLT SMS templates that get approved on the first attempt. Template types, variable syntax, rejection reasons, and operator-specific tips.
Ready to Send OTPs?
Integrate StartMessaging in 5 minutes. No DLT registration required.