Table of Contents

Mapping DataCodings to .NET Encoding

For each SmppClient instance, you can define which Encoding will be used for specified DataCodings.


//Set GSM Packed Encoding for data_coding Latin1 (0x3)
client.EncodingMapper.MapEncoding(DataCodings.Latin1, new Inetlab.SMPP.Encodings.GSMPackedEncoding());

By default SmppClient has the following DataCodings to Encoding mappings:

mapper.MapEncoding(DataCodings.Default, new Inetlab.SMPP.Encodings.GSMEncoding());

mapper.MapEncoding(DataCodings.Class0FlashMessage, new Inetlab.SMPP.Encodings.GSMEncoding());
mapper.MapEncoding(DataCodings.Class1MEMessage, new Inetlab.SMPP.Encodings.GSMEncoding());
mapper.MapEncoding(DataCodings.Class2SIMMessage, new Inetlab.SMPP.Encodings.GSMEncoding());
mapper.MapEncoding(DataCodings.Class3TEMessage, new Inetlab.SMPP.Encodings.GSMEncoding());

mapper.MapEncoding(DataCodings.Class0, new Inetlab.SMPP.Encodings.GSMEncoding());
mapper.MapEncoding(DataCodings.Class1, new Inetlab.SMPP.Encodings.GSMEncoding());
mapper.MapEncoding(DataCodings.Class2, new Inetlab.SMPP.Encodings.GSMEncoding());
mapper.MapEncoding(DataCodings.Class3, new Inetlab.SMPP.Encodings.GSMEncoding());


mapper.MapEncoding(DataCodings.UCS2, Encoding.BigEndianUnicode);
mapper.MapEncoding(DataCodings.Class1MEMessageUCS2, Encoding.BigEndianUnicode);
mapper.MapEncoding(DataCodings.Class2SIMMessageUCS2, Encoding.BigEndianUnicode);
mapper.MapEncoding(DataCodings.Class3TEMessageUCS2, Encoding.BigEndianUnicode);
mapper.MapEncoding(DataCodings.UnicodeFlashSMS, Encoding.BigEndianUnicode);
Note

Before changing mapping settings, please clarify with your SMPP provider the encoding expected (character set for DataCodings value).

National Language tables

These tables allow to use different character sets in SMS messages. You can choose a language by adding User Data Header. There is an ability to replace standard GSM 7 bit default alphabet table for the whole text (Locking shift table) or only extension table (Single shift table).

Code bellow shows abilities how you can specify desired character set:


       await client.SubmitAsync(SMS.ForSubmit()
           .Text(text).From("5555").To(phone)
           .NationalLanguageLockingShift(NationalLanguage.Spanish)
       );

or

submitSm.UserData.Headers.Add(new NationalLanguageLockingShift(NationalLanguage.Spanish));

The library is also able to detect national language User Data Header in the received PDU and to show text with the correct character set in property MessageText.