Два алфавита
SMS вмещает 140 байт. В GSM-7 на символ отводится семь бит, поэтому один сегмент содержит 160 символов (153 на часть при объединении). В Unicode (UCS-2) на символ требуется шестнадцать бит, и в сегмент помещается 70 символов (67 на часть при объединении). Кодировка выбирается для сообщения целиком: один символ вне GSM-7 переводит весь текст в Unicode.
Сегменты и конкатенация
Длинный текст делится на сегменты, которые телефон собирает в одно сообщение. В каждом сегменте шесть байтов занимает служебный заголовок с номером части, поэтому ёмкость снижается до 153 символов для GSM-7 и 67 для Unicode. Плата взимается за каждый сегмент, максимум за 6 частей на сообщение. Редактор сообщений и ответ API показывают их количество до отправки, поэтому стоимость известна заранее.
Что меняет кодировку
GSM-7 включает основные латинские буквы, цифры, распространённые знаки препинания и несколько букв с диакритикой из западноевропейских языков. Типографские кавычки, длинное тире, большинство эмодзи и буквы ő, ș, ă в него не входят. Любой такой символ переводит сообщение в Unicode. Чаще всего кодировку случайно меняет типографский апостроф, вставленный из текстового редактора.
Писать для одного сегмента
- Используйте прямые кавычки и обычный дефис.
- Не используйте эмодзи в транзакционных сообщениях: они заметно сокращают ёмкость и не улучшают доставку.
- Делайте ссылки короткими и постоянными: адрес для отслеживания длиной 30 символов занимает пятую часть сегмента.
- Проверяйте текст с реальными данными: длинное имя в переменной может вывести итоговый вариант за предел сегмента, даже если шаблон помещается.
Нелатинские письменности
Арабский, кириллица, греческий, иврит, деванагари, тайский, китайский, японский и корейский всегда используют Unicode. Это свойство письменности: в одном сегменте доступно 70 символов (67 на часть при объединении). Коды, уведомления и короткие подтверждения помещаются в один сегмент на любом языке. Рекламный текст лучше осознанно составить на два сегмента, чем случайно превысить один. Ожидаемая кодировка для каждого направления указана на страницах стран.
Что-то непонятно или устарело? Напишите на [email protected]. Мы внесём исправления в руководство и обновим дату.
