Проблема со знаком @ довольно популярна в SMS, поскольку этот символ в GSM имеет код 0x00 вместо 0x40 в ASCII или UTF-8.
Для правильной обработки этого и некоторых других символов рекомендуется упомянутьследующие параметры при отправке сообщения через Kannel:
- кодирование - 0 (по умолчанию GSM) или 2 (если вы отправляете символы Unicode)
- charset - набор символов строки, которую вы отправляете в Kannel
В этом случае Kannel преобразует символы самостоятельно (если построен с помощью libiconv).
Пример:
http://127.0.0.1:13013/cgi-bin/sendsms?...&coding=0&charset=utf-8&text=test+@+sign
Другая проблема может возникнуть, если вы подключаетесь к SMSC через SMPP.Некоторые платформы могут использовать кодировку, отличную от стандартной.Например, это может быть ASCII.
Чтобы решить эту проблему, вы можете использовать alt-charset параметр для правильного group = smsc раздела файла конфигурации:
group = smsc
smsc = smpp
...
alt-charset = "ASCII"
Для отладки я рекомендую добавить ведение журнала для соединения SMSC log-level = 0 и проверить наличие дампов протокола, чтобы увидеть, что именно отправляется из Kannel в SMSC.Обычно это должен быть символ 0x00 для знака @.