Случалось ли вам отправлять клиентам простое напоминание о встрече и замечать, что счет за SMS вырос вдвое без видимых причин? Это явление напрямую связано с **кодировкой SMS-сообщений** — техническим аспектом, о котором часто забывают, но который может серьезно ударить по вашему бюджету на связь.

Что такое кодировка SMS-сообщения?

Чтобы дать четкое определение кодировки SMS, нужно понять, что мобильные сети читают разные символы по-разному. Кодирование — это технический процесс, который преобразует буквы, цифры и символы вашего сообщения в бинарные данные (нули и единицы), передаваемые телеком-операторами.

Исторически сотовая сеть создавалась для передачи очень легких сообщений. Сегодня отправку SMS регулируют два основных стандарта:

  • GSM-7: стандартная кодировка, использующая 7 бит на символ. Она позволяет уместить до 160 символов в одном SMS.
  • UCS-2 (Unicode): более продвинутая кодировка, использующая 16 бит на символ. Она необходима для нелатинских алфавитов, сложных специальных символов и эмодзи. При ее использовании лимит одного SMS сокращается всего до 70 символов.

GSM-7 против UCS-2: ловушка специальных символов и эмодзи

Именно здесь начинаются сложности для владельцев малого бизнеса (салонов красоты, медицинских клиник, автошкол). Всего один символ, выходящий за рамки таблицы GSM-7, заставляет всю систему переключить сообщение в режим Unicode.

Использование специальных символов и диакритических знаков в SMS, таких как «ç», «ê» или «ë» (а в случае русского языка — любых букв кириллицы), а также отправка эмодзи через кодировку UCS-2 мгновенно сокращают лимит символов со 160 до 70 на одно сообщение. Влияние эмодзи на кодировку SMS очевидно: ваше сообщение разбивается на несколько частей (сегментов), что умножает стоимость отправки у большинства традиционных провайдеров.

Вот сравнительная таблица для наглядности:

Стандарт кодированияЛимит символов (1 SMS)Разрешенные символыВлияние на стандартную тарификацию
GSM-7160 символовБазовый латинский алфавит, цифры, пробелы и некоторые распространенные диакритические знаки (é, à, è, ù)Стандартный тариф (1 кредит)
UCS-2 (Unicode)70 символовЛюбые алфавиты (кириллица, арабский, китайский), эмодзи, сложные диакритические знаки (ç, ê, ï)Двойная или тройная тарификация (несколько сегментов)

Влияние кодировки Unicode на стоимость SMS

Влияние кодировки Unicode на стоимость SMS — это финансовая ловушка номер один при использовании классических SMS-шлюзов, таких как Twilio или Plivo. Эти платформы тарифицируют сообщения по сегментам. Один сегмент равен 160 символам в GSM-7, но сокращается до 70 символов, как только обнаруживается хотя бы один символ Unicode (включая любые кириллические буквы).

Представьте, что вы управляете автосервисом и отправляете такое напоминание о записи:

"Bonjour ! Votre véhicule est prêt. Merci de passer le récupérer avant 18h au garage. À bientôt !"

Этот текст на латинице содержит 107 символов. Если вы отправляете его в таком виде, используется стандартная кодировка GSM-7 (символ «À» иногда может вызывать проблемы на некоторых шлюзах, но в остальном все стандартно). Это стоит вам 1 сегмент SMS.

Однако, если вы отправляете аналогичное сообщение на русском языке (например: «Здравствуйте! Ваш автомобиль готов. Заберите его, пожалуйста, до 18:00. До встречи!»), оно изначально пишется кириллицей и автоматически кодируется в Unicode (UCS-2). Эти 84 символа на русском языке сразу же превышают лимит в 70 символов и делятся на 2 сегмента! У классического оператора вы заплатите вдвое больше.

Именно во избежание таких неприятных сюрпризов многие компании ищут альтернативы. С помощью MySMSGate вы можете подключить собственный Android-смартфон для отправки сообщений. Мы предлагаем единый фиксированный тариф — 0,02 $ за отправленное SMS, независимо от его длины или кодировки. У нас нет скрытой тарификации за сегменты. Чтобы узнать больше о бюджетных решениях, читайте наше руководство о том, как выбрать самый дешевый SMS-шлюз для малого бизнеса.

Разработчикам: какую кодировку выбрать для отправки SMS через API?

Если вы интегрируете SMS-уведомления в собственное приложение или CRM-систему, возникает технический вопрос: какую кодировку выбрать для отправки SMS через API?

Практически все современные API, включая API MySMSGate, принимают запросы в формате JSON в кодировке UTF-8. Однако затем SMS-шлюз должен преобразовать этот поток UTF-8 для мобильной сети. Чтобы обеспечить максимальную совместимость и избежать появления нечитаемых символов (знаменитых знаков вопроса или черных квадратов), крайне важно правильно настроить кодировку UTF-8 на SMS-шлюзе.

Вот простой пример на Python для отправки корректно закодированного сообщения через API MySMSGate без необходимости беспокоиться о сложном разделении на сегменты:

import requests

url = "https://mysmsgate.net/api/v1/send"
headers = {
    "Authorization": "Bearer VOTRE_CLE_API",
    "Content-Type": "application/json"
}
payload = {
    "to": "+33612345678",
    "message": "Votre rendez-vous est confirmed pour demain à 14h ! ",
    "sim_slot": 1
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

Наш API берет на себя все процессы конвертации. Кроме того, в нашу систему встроен механизм автоматического возврата средств в случае сбоя доставки, что гарантирует оплату только за реально доставленные сообщения. Для полной интеграции на вашем сервере ознакомьтесь с нашим руководством о том, как отправлять SMS с телефона Android через API.

Как избежать двойного кодирования SMS?

Чтобы избежать двойного кодирования SMS, убедитесь, что ваш код не применяет функции кодирования (такие как urlencode или utf8_encode) к строке, которая уже обрабатывается вашей HTTP-библиотекой. Отправка дважды закодированных данных приводит к тому, что клиенты получают нечитаемые сообщения со странным набором символов («кракозябрами»).

Особый случай: пресеты кодирования видео для SMS/MMS

В сфере мобильной связи вы можете иногда столкнуться с понятием пресет кодирования видео для SMS/MMS. В отличие от кодирования текста (GSM-7 или UCS-2), этот пресет относится к сжатию и форматированию мультимедийных файлов (видео, анимированных изображений), отправляемых через MMS.

Мобильные сети накладывают очень строгие ограничения на размер MMS (часто менее 300 КБ или 600 КБ в зависимости от оператора). Пресет кодирования видео позволяет значительно снизить разрешение и битрейт ролика, чтобы он прошел через шлюз оператора без блокировки. Если ваша цель — отправка исключительно текстовых уведомлений или рабочих напоминаний, вам не придется беспокоиться об этих сложных настройках.

Часто задаваемые вопросы о кодировке SMS

Ниже приведены ответы на самые популярные вопросы о работе с кодировками и специальными символами при отправке бизнес-SMS.

Почему из-за одного спецсимвола или буквы кириллицы стоимость SMS может вырасти вдвое?

Такие символы, как буквы кириллицы, эмодзи или некоторые французские буквы с диакритическими знаками (например, «ç», «ê»), отсутствуют в стандартном алфавите GSM-7. Стоит использовать хотя бы один такой символ, как программа отправки переводит все сообщение в режим Unicode (UCS-2). Лимит символов в одном SMS при этом падает со 160 до 70. Если ваш текст длиннее 70 символов, он делится на два сегмента, что удваивает стоимость отправки у традиционных операторов.

Как протестировать кодировку моих SMS перед отправкой?

Для этого существуют онлайн-калькуляторы длины SMS (часто называемые «SMS Length Calculator»). Вы можете вставить туда свой текст и сразу увидеть, не заставляет ли какой-то невидимый символ или эмодзи переключить кодировку в Unicode, а также узнать точное количество сегментов, за которые спишет плату ваш провайдер.

Как MySMSGate помогает избежать переплат, связанных с Unicode?

В отличие от классических API (Twilio, Plivo), которые берут плату за каждый сегмент отдельно, MySMSGate предлагает единый фиксированный тариф — 0,02 $ за отправленное сообщение, независимо от его длины, наличия спецсимволов или эмодзи. Ваши сообщения отправляются напрямую через ваш Android-смартфон, подключенный к нашей платформе, что полностью избавляет вас от переплат за разделение на сегменты.