Всё, что стоит знать, и ничего лишнего.
Разница между 160 и 70
Если ваше сообщение помещается в 7-битный формат GSM, вы получаете 160 символов на сегмент. Если вы добавите один длинный тире (—), фигурную кавычку ("") или любой арабский/китайский/эмодзи символ, всё сообщение станет UCS-2, и вы получите 70 символов на сегмент. Сообщение из 150 символов, которое помещается в один сегмент GSM, превращается в сообщение из 150 символов, для которого требуется 3 сегмента UCS-2, что втрое увеличивает ваши затраты. Для отправки больших объемов сообщений нормализуйте знаки препинания до эквивалентов ASCII GSM-7 во время составления сообщения.
Конкатенация (многокомпонентное SMS)
Сообщения, содержащие более одного сегмента, разделяются на стороне клиента и объединяются принимающим телефоном с использованием заголовка пользовательских данных (UDH). Сегменты, объединенные с помощью UDH, имеют длину 153 символа (GSM-7) или 67 символов (UCS-2) — три байта на сегмент расходуются самим UDH. Большинство агрегаторов взимают плату за сегмент, а не за сообщение — сообщение GSM-7 длиной 320 символов тарифицируется как 3 сегмента.
Когда следует сознательно использовать UCS-2
Всегда для арабского, китайского, японского, корейского, кириллического текста или эмодзи. Всегда для европейских языков с диакритическими знаками, не входящими в расширение GSM-7 (польский ł, чешский ř, вьетнамский ă). SMS на арабском языке в регионе MENA по сути на 100% используют UCS-2 — планируйте бюджет соответствующим образом (одноразовые пароли на арабском языке обычно состоят из 2 сегментов).
8-битный вариант (используется редко)
SMPP также поддерживает необработанное 8-битное двоичное кодирование для двоичных данных — используется для команд OTA SIM-карт, доставки рингтонов (1990-е годы) и в очень специфических сценариях M2M. Практически никогда не встречается в коммерческом трафике A2P.