SMPP codecs

Smartswitch supports following codecs:

SMPP Codec ID codec
0x00 SMSC Default Alphabet (see below)
0x01 IA5 (CCITT T.50)/ASCII (ANSI X3.4)
0x02 Octet unspecified (8-bit binary)
0x03 Latin 1 (ISO-8859-1)
0x04 Octet unspecified (8-bit binary)
0x05 JIS (X 0208-1990)
0x06 Cyrllic (ISO-8859-5)
0x07 Latin/Hebrew (ISO-8859-8)
0x08 UCS2 (ISO/IEC-10646)
0x09 Pictogram Encoding
0x0A ISO-2022-JP (Music Codes)
0x0D Extended Kanji JIS
0x0E KS C 5601

SMPP Codec ID is encoded into SMPP message and receiver can learn from it the codec which should be used to decode message.
Besides codec 0x00 - by ID 0x00 it's impossible to know which codec was used to encode message, and one should appeal to partner to tell which codec is used for SMPP Codec ID 0x00.

Codec 0x00.

This is special SMPP Codec ID.
In case if in SMS body codec 0x00 is specified, it means that peers have arranged (verbally or in written form) to use some special codec, which doesn't have dedicated by standard SMPP Codec ID - so called default codec.
Both peers should configure the same default codec in settings of their systems.
In Smartswitch default codec is configured using an option with a same name in SMPP settings of a dial-peer.
As far SMS message doesn't contain used codec identifier (unlike other SMPP Codec IDs), SMS delivery will work correctly only in case if both peers configure the same default codec.
Usually GSM is used as default codec.

Cyrillic and non-cyrillic codecs.

It's desirable to use codec 0x08 - UCS2.
This is Unicode, which supports codecs of all languages.
Other codecs should be used only if partner doesn't support UCS2 for some reason.

Codec translation.

Smartswitch supports message translation on fly.
Translation occurs, if, according to terminator's settings, it's requested to send a message to him in codec, which differs from codec, which is used in incoming message from originator.
Smartswitch accepts messages from originator in any codec, and sends to terminator using the codec with greatest priority.
In case if terminator has several codecs configured, and one of them matches with accepted message codec, then translation doesn't occur.
In case if there is no way to avoid translation, Smartswitch tries to translate message to codec with highest priority.
In case if during message translation some symbols have been lost, for example when translating from cyrillic message to 0x03 - Latin 1, then Smartswitch tries to encode using the next priority codec from list.
In case if it's impossible to encode with none of the configured codecs without symbol loss - the message is not sent to terminator.

If the message is a segment of a multi-segment message, then no codec conversion occurs.
This is due to the fact that there may be such a situation that segment 1 can be transmitted through Smartswitch, and segment 2 of the same message can be transmitted through the gateway of another operator.
If Smartswitch transcodes into codec A, and the parallel operating gateway into codec B, then the receiving terminal will have difficulties in recovering a message from several parts encoded with different codecs.
Also, the receiving terminal will have difficulty combining the message if the size of the message segment is changed during the transcoding process.
Therefore, to prevent these problems, no re-encoding occurs for multi-segment messages.
If, according to Smartswitch settings, none of the terminators supports the message codec, then the message will be discarded and the originator will be able to re-route it to its backup route.

Billing depending on codec

Billing unit is:

Depending on codec, billing unit (140/134/133 bytes) may contain different count of text symbols:

SMPP Codec ID codec symbols count in 1-segment SMS symbols count in 1 segment of multi-segment SMS
0x00 SMSC Default Alphabet, GSM 160 152
0x00 SMSC Default Alphabet, non-GSM 140 134
0x01 IA5 (CCITT T.50)/ASCII (ANSI X3.4) 140 134
0x03 Latin 1 (ISO-8859-1) 140 134
0x06 Cyrllic (ISO-8859-5) 140 134
0x07 Latin/Hebrew (ISO-8859-8) 140 134
0x08 CS2 (ISO/IEC-10646) 70 67

Русский перевод