Оригинал: http://rattler.kiev.ua/node/10
Автор: Михаил Бочкарев, Net Style
В моей компании одним из важных моментов тестирования подключений к SMSC является проверка на корректную доставку SMS с символом "@" в тексте. Спрашивается, чем было вызвано настолько особое отношение к данному символу?
А ответ, на самом деле, очень простой. SMS сообщения в GSM-сетях используют в качестве внутренней 7-битной кодировки стандарт GSM 03.38, который очень похож на ASCII, но не полностью. В частности, символ "@" в этой кодировке имеет код 0x00. А в ПО SMSC еще достаточно часто можно встретить использование zero-finished строк, для которых такой символ является маркером конца строки. Вот так! ;-)
Из замеченных вариантов поведения: обрезание сообщения после первого вхождения "@"; забивание сообщения символом "@" по заявленной в SMPP длине сообщения.
Один из вариантов решения - передача сообщения с указанием кодировки UCS2.
Однако, так будет использоваться по 2 байта на символ, что существенно сокращает объем информации в SMS (со 160 символов до 70).