Определение кодировки означает проверку, все ли символы входят в алфавит GSM-7; если хотя бы один не входит, всё сообщение становится UCS-2, а ёмкость падает со 160 до 70 символов. Поскольку SMS тарифицируется посегментно, один случайный эмодзи или типографская кавычка могут удвоить или утроить стоимость сообщения.
Как определить GSM-7 против UCS-2
Правило простое и абсолютное: если каждый символ сообщения присутствует в базовой таблице или таблице расширения GSM-7, сообщение можно отправить как GSM-7; если какой-либо символ отсутствует, всё сообщение должно использовать UCS-2. Поэтому определение — это проверка принадлежности множеству алфавита GSM-7, применённая ко всей строке, с учётом того, что десять символов расширения считаются за два септета каждый.
for each character c in message:
if c not in GSM7_BASIC and c not in GSM7_EXTENSION:
encoding = UCS-2 # one stray char forces the whole message
break
else:
encoding = GSM-7Символы, незаметно вынуждающие UCS-2
Дорогие символы — это те, которые пользователи вносят, сами того не замечая. Текстовые редакторы и телефоны автоматически заменяют прямые кавычки и дефисы типографскими версиями, которых нет в GSM-7. Эмодзи никогда не входят в GSM-7. Нелатинские имена и любая акцентированная буква вне набора акцентов GSM-7 делают то же самое. Очистка их перед отправкой — замена типографской пунктуации на ASCII, транслитерация где допустимо — удерживает сообщения в GSM-7.
| Символ-триггер | Замена для GSM-7 |
|---|---|
| ' ' (фигурные одинарные кавычки) | ' (прямой апостроф) |
| “ ” (фигурные двойные кавычки) | " (прямая кавычка) |
| – — (короткое/длинное тире) | - (дефис) |
| … (многоточие) | ... (три точки) |
| эмодзи | (удалить или описать словами) |
| неразрывный пробел | (обычный пробел) |
Как кодировка определяет число сегментов
SMS тарифицируется посегментно, а кодировка задаёт, сколько сегментов нужно сообщению. Пороги фиксированы: GSM-7 даёт 160 в одном сегменте, затем 153 на часть; UCS-2 даёт 70, затем 67. Поэтому сообщение из 75 символов — это один сегмент в GSM-7, но два в UCS-2. Рекламное SMS из 160 символов с одним эмодзи прыгает с одного сегмента до трёх. Кодировка — крупнейший управляемый фактор стоимости сообщения.
| Сегменты | Символы GSM-7 | Символы UCS-2 |
|---|---|---|
| 1 | 1 – 160 | 1 – 70 |
| 2 | 161 – 306 | 71 – 134 |
| 3 | 307 – 459 | 135 – 201 |
| n (n ≥ 2) | 153 × n | 67 × n |
Практический контроль стоимости
Три привычки делают стоимость SMS предсказуемой. Во-первых, проверяйте и очищайте символы каждого исходящего сообщения, отмечая всё, что вынуждает UCS-2. Во-вторых, держите шаблоны в пределах одного сегмента GSM-7 (≤160 символов) везде, где это позволяет сообщение. В-третьих, измеряйте фактическое число сегментов на сообщение и на кампанию, поскольку именно оно — а не число символов — тарифицируется. Калькулятор сегментов делает компромисс наглядным ещё до отправки.
Часто задаваемые вопросы
Как узнать, GSM-7 моё SMS или UCS-2?
Проверьте каждый символ по алфавиту GSM-7. Если все символы входят в базовую таблицу или таблицу расширения GSM-7, это GSM-7; если хотя бы один не входит, всё сообщение — UCS-2. Проверка GSM-7/Unicode автоматизирует это и подсвечивает проблемные символы.
Во сколько мне обходится один эмодзи в SMS?
Потенциально дорого. Один эмодзи вынуждает всё сообщение перейти на UCS-2, снижая ёмкость со 160 до 70 символов. Сообщение из 160 символов с одним эмодзи переходит с одного сегмента до трёх, примерно утраивая стоимость.
Как тарифицируется многосегментное SMS?
Каждый сегмент тарифицируется как отдельное SMS. Сообщение, разбитое на три части, тарифицируется как три сообщения. Поэтому кодировка, задающая ёмкость на сегмент, — крупнейший рычаг стоимости.
Как удержать сообщения в GSM-7?
Очищайте ввод перед отправкой: заменяйте типографские кавычки и тире ASCII-эквивалентами, удаляйте эмодзи и транслитерируйте случайные акценты где допустимо. Держите шаблоны в пределах 160 символов GSM-7, чтобы они оставались одним сегментом.
Стоимость определяется числом символов или числом сегментов?
Числом сегментов. Два сообщения с одинаковым числом символов могут стоить по-разному, если одно использует UCS-2. Всегда измеряйте фактическое число сегментов на сообщение, а не сырую длину в символах.
Технические характеристики источника
На этой странице представлены опубликованные стандарты, на которых они основаны. (Открывается в новой вкладке)