Краткий ответ
SMS разбивается на несколько сообщений, когда текст превышает один сегмент: 160 символов в GSM-7 или 70 символов в Unicode (UCS-2). Длинные сообщения отправляются как связанные сегменты по 153 или 67 символов, потому что каждый из них содержит заголовок для сборки. Одна арабская буква, эмодзи или «фигурная» кавычка переводит всё сообщение в Unicode.
Каковы лимиты сегментов?
Спецификация 3GPP TS 23.040 ограничивает каждое SMS 140 октетами пользовательских данных. Если сообщение длиннее, в каждую часть добавляется заголовок пользовательских данных (User Data Header) размером 6 октетов, чтобы телефон мог собрать части вместе. Из-за этого место в каждом сегменте уменьшается.
| Кодировка | Для чего используется | Одно SMS | Один сегмент длинного SMS |
|---|---|---|---|
| GSM-7 | Базовые латинские буквы, цифры, распространённая пунктуация | 160 символов | 153 символа |
| UCS-2 | Арабский язык, эмодзи, другие символы вне GSM | 70 символов | 67 символов |
Какие скрытые символы приводят к неожиданному разбиению?
- Фигурные кавычки, длинные тире или неразрывные пробелы, вставленные из текстового редактора, переводят сообщение в UCS-2 и снижают лимит со 160 до 70 символов.
- Символы из таблицы расширений GSM-7, такие как € { } [ ] ~ | ^ и \, считаются за два символа каждый.
- Эмодзи переводят сообщение в UCS-2, и большинство из них занимает два из 70 мест.
- Переменные персонализации могут увеличить длину сообщения сверх лимита для получателей с длинными именами.
Как сделать так, чтобы SMS не разбивалось?
- Вставьте итоговый текст с самыми длинными значениями переменных в счётчик символов.
- Замените «умные» кавычки и тире обычными, чтобы сохранить GSM-7.
- Сократите ссылки и уберите лишние слова.
- Отправляйте текст на английском и на арабском отдельными сообщениями.
- Проверяйте количество сегментов перед каждой крупной рассылкой.
Приходит ли разбитое сообщение как одно?
Да, на большинстве телефонов части собираются вместе и показываются как одно сообщение. Каждая часть, как правило, тарифицируется отдельно и может иметь собственный отчёт о доставке (DLR), поэтому сообщение из 161 символа в GSM-7 оплачивается как два SMS.
