Кодирование данных SMPP-GSM

Предположим, что у нас есть ESME, который взаимодействует с SMSC, а SMSC — с мобильной станцией. Если текстовое сообщение содержит символ, который необходимо экранировать, будет использоваться символ ESC (0x1B). Однако я так понимаю, что ESC является управляющим символом в алфавите GSM, поэтому для кодирования будет использоваться Latin-1. (Согласно спецификации SMPP v3.4, стр. 8). Предположим далее, что кодирование, доступное от SMSC к мобильной станции, представляет собой алфавит GSM по умолчанию. Можно ли интерпретировать escape-символ (ESC), закодированный в Latin-1 с помощью ESME? Короче говоря, будут ли возникать какие-либо странные символы при экранировании символов текстового сообщения в GSM ESME, которые могут быть неверно истолкованы SMSC или мобильной станцией?


person user1845360    schedule 14.12.2012    source источник


Ответы (1)


Кодировка, которую вам нужно использовать, сильно зависит от используемого значения data_coding. Предполагая, что вы используете data_coding = 0, что означает «Алфавит по умолчанию», тогда все же зависит от того, какой «Алфавит по умолчанию» вашего SMSC.

Например, есть SMSC, которые используют Latin1 в качестве набора символов, однако символы, которые не являются частью стандартного алфавита GSM, необходимо экранировать.

Сначала вам нужно определить, какая кодировка используется по умолчанию для вашего SMSC (лучше компонента SMPP). Последовательность 0x1b в основном не имеет ничего общего с Latin1. Если ваш SMSC использует GSM и вы хотите отправить знак €, вы отправляете 0x1b0x65 в виде последовательности байтов в поле short_message вашей операции submit_sm.

Наконец, если ваш SMSC использует GSM, а ESME использует Latin1, то могут появиться странные символы, поскольку GSM имеет, например, греческие символы, которые не являются частью Latin1.

person Martin    schedule 14.12.2012