При создании автоматизированных систем или отправке уведомлений клиентам многие владельцы бизнеса и разработчики с удивлением обнаруживают, что их ежемесячные счета за SMS оказываются в два раза выше ожидаемых. В этом подробном руководстве представлена таблица с количеством символов, которые требуются для отправки спецсимволов в SMS, что поможет вам понять, как скрытая смена кодировки может резко увеличить ваши расходы на рассылку.

Почему специальные символы меняют длину и стоимость SMS

В телекоммуникационных стандартах тарификация текстовых сообщений происходит не по фактическому количеству написанных слов, а по "сегментам." Стандартный сегмент SMS кодируется с использованием набора символов GSM-7, который позволяет уместить до 160 символов в одном сообщении. Однако как только вы добавляете хотя бы один символ вне этого стандартного набора — будь то эмодзи, кириллическая буква или даже «умная кавычка», скопированная из Microsoft Word, — кодировка всего сообщения переключается на UCS-2 (Unicode).

Мнение, что при кодировке UCS-2 sms messages are limited to 160 characters, even when they include special characters and emojis, является распространенным заблуждением. На самом деле, как только обнаруживается хотя бы один символ, не входящий в GSM, максимальный лимит символов на сегмент мгновенно падает со 160 до всего лишь 70 символов. Если длина вашего сообщения составляет 71 символ и оно содержит один эмодзи, традиционные API-провайдеры, такие как Twilio или Plivo, разделят его и выставят счет за два отдельных SMS-сегмента.

Понимание того, what special carachters usually affect messages, имеет решающее значение для снижения операционных расходов, особенно если вы ведете локальный бизнес в сфере услуг (клиника, салон красоты или ремонтная мастерская) и отправляете клиентам напоминания о записи.

Разница между кодировками GSM-7 и UCS-2

GSM-7 — это 7-битный стандарт кодирования символов, разработанный специально для SMS. Он содержит большинство латинских символов, цифр и базовых знаков препинания. UCS-2 — это 16-битный стандарт кодирования, который может представлять практически любой символ на любом языке, включая эмодзи, но требует в два раза больше данных на один символ. Из-за этих накладных расходов сети операторов связи снижают емкость сегмента до 70 символов при активации UCS-2.

Полная таблица соответствия специальных символов SMS

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

Категория символовПримеры символовБит на символВес символа в SMSМакс. лимит сегмента
GSM-7 BasicA-Z, a-z, 0-9, пробелы, простые знаки препинания (., !, ?, @, $, и т. д.)7 бит1 символ160 символов
GSM-7 Extended^, {, }, [, ], ~, |, \, €14 бит2 символа160 символов (каждый расширенный символ считается за 2)
UCS-2 (Unicode)á, í, ó, ñ, ’ (умная кавычка), эмодзи (😀), кириллица, арабский16 битПереводит все сообщение в Unicode70 символов

Как показано в таблице, использование расширенного символа GSM-7, такого как фигурная скобка "{" или обратный слэш "\", не приводит к принудительному переходу на Unicode, но считается за два символа в рамках вашего 160-символьного лимита. Однако использование символа, не входящего в GSM, например "á" (часто встречающегося в испанских настройках sms y caracteres especiales) или типографского апострофа "’", сразу же сократит лимит сегмента вашего сообщения до 70 символов.

Как специальные символы влияют на стоимость SMS

Чтобы понять los caracteres especiales que impacto tienen en el coste de los sms (влияние специальных символов на стоимость SMS), давайте рассмотрим практический пример. Представьте, что вы руководите стоматологической клиникой и отправляете следующее напоминание о приеме:

"Hi John, your appointment is scheduled for tomorrow at 3:00 PM. Please reply to confirm or call us if you need to reschedule! Él"

Длина этого сообщения составляет 123 символа. Если вы используете стандартную букву "E" вместо "É" с акцентом, сообщение будет отправлено в кодировке GSM-7. Оно легко укладывается в 160-символьный лимит, что обойдется вам ровно в 1 SMS-сегмент.

Однако из-за буквы "É" с акцентом сообщение принудительно переводится в UCS-2. Лимит сегмента теперь составляет 70 символов. Ваше 123-символьное сообщение разбивается на два сегмента (первый сегмент — 67 символов, второй — 56 символов из-за заголовков сегментации). Традиционные API-шлюзы выставят вам счет за 2 SMS-сообщения вместо 1.

Если вы используете традиционных провайдеров, такая сегментация может удвоить или утроить ваш ежемесячный счет. Вот почему многие компании ищут альтернативу Twilio или изучают руководство по самым дешевым SMS API, чтобы избежать необоснованных наценок за сегменты.

Как избежать использования специальных символов в SMS?

Если вы хотите, чтобы ваши сообщения укладывались в 160-символьный лимит, и стремитесь избежать непредвиденных расходов, вам необходимо активно очищать текст SMS. Вот практические стратегии того, как избежать специальных символов в SMS:

  1. Очищайте скопированный текст: многие шаблоны в CRM-системах содержат "умную" пунктуацию. Например, скопированный из текстового редактора апостроф (’) или запятая могут помешать корректной доставке или переключить кодировку в Unicode. В качестве реального примера: некоторые внутренние корпоративные системы выводят операторам краткое предупреждение: "outbound sms special characters please be aware that any outbound sms sent must be 250 characters or fewer. if your message has been copied & pasted from a saved template and contains a comma (,) or apostrophe ('), please remove the special character and then re-enter it before sending". Замена умных кавычек стандартными прямыми кавычками (') гарантирует соответствие стандарту GSM-7.
  2. Заменяйте символы вне GSM программно: если ваша система генерирует SMS динамически, внедрите функцию транслитерации для замены таких символов, как "á" на "a", "é" на "e" и "“" на """.
  3. Учитывайте особенности конкретных платформ: если вы ведете разработку на корпоративных low-code платформах, обращайте внимание на то, как они работают с кодировкой. Например, при интеграции с OutSystems (special characters in gsm outsystems) текстовые переменные могут автоматически преобразовывать стандартную пунктуацию в эквиваленты Unicode во время сериализации JSON.

Пример кода на Python для очистки текста SMS

Ниже представлена простая функция на Python для удаления специальных символов, которые не распознаются в SMS или могут принудительно активировать дорогую кодировку UCS-2:

import unicodedata

def sanitize_for_gsm7(text):
    # Сопоставление популярной умной пунктуации с эквивалентами GSM-7
    replacements = {
        '\u2018': "'", '\u2019': "'", # Умные одинарные кавычки
        '\u201c': '"', '\u201d': '"', # Умные двойные кавычки
        '\u2013': '-', '\u2014': '-', # Среднее и длинное тире
        '\u20ac': 'EUR'               # Замена знака евро при необходимости
    }
    for unicode_char, gsm_char in replacements.items():
        text = text.replace(unicode_char, gsm_char)
    
    # Нормализация акцентов (например, é в e)
    normalized = unicodedata.normalize('NFD', text)
    gsm7_text = "".join([c for c in normalized if not unicodedata.combining(c)])
    return gsm7_text

message = "Hello! Your appointment is confirmed for tomorrow é."
print(sanitize_for_gsm7(message))
# Вывод: "Hello! Your appointment is confirmed for tomorrow e."

Забудьте о проблемах с кодировкой благодаря MySMSGate

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

MySMSGate полностью решает эту проблему. Вместо того чтобы отправлять сообщения через дорогие сети операторов со строгой тарификацией за каждый сегмент, MySMSGate превращает ваш собственный Android-телефон и SIM-карту в SMS-шлюз.

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

  • Фиксированная цена: мы взимаем фиксированную плату в размере 0,02 $ за отправленное сообщение, независимо от его длины, кодировки символов или количества сегментов. Вам больше не придется беспокоиться о том, что эмодзи или символ с акцентом удвоят ваш счет.
  • Использование собственного номера: сообщения отправляются непосредственно с SIM-карты вашего Android-телефона. Ваши клиенты видят местный, знакомый мобильный номер, что повышает процент открытий и ответов.
  • Никаких сложных регистраций: забудьте о сложной регистрации 10DLC, одобрении операторов и ежемесячных сборах за бренд, которые характерны для традиционных API вроде Twilio.
  • Поддержка Dual SIM и нескольких устройств: управляйте несколькими телефонами и SIM-картами из единой панели управления, выбирая нужную линию для каждого диалога с клиентом.

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

Ознакомьтесь с ответами на популярные вопросы о кодировке символов в SMS, специальных символах и лимитах сообщений.

Какие специальные символы сокращают лимит SMS до 70 символов?

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

Считаются ли пробелы за символы в SMS?

Да, каждый пробел считается за один символ как в стандарте кодирования GSM-7, так и в UCS-2.

Почему моя SMS-платформа списывает плату за несколько сообщений, хотя я отправил только одно?

Если ваше сообщение превысило 160 символов (в GSM-7) или 70 символов (в UCS-2), оператор разделил его на несколько сегментов. Традиционные API тарифицируют каждый сегмент отдельно, поэтому одно длинное сообщение может легко обойтись вам в 2 или 3 раза дороже базового тарифа.

Как проверить, содержит ли мое SMS-сообщение специальные символы?

Вы можете использовать онлайн-калькуляторы сегментов SMS или запустить простой скрипт очистки на вашем сервере, чтобы определить, активирует ли ваш текст кодировку Unicode UCS-2 перед его отправкой провайдеру API.