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 following DataCodings to Encoding mappings:

MapEncoding(DataCodings.Default, new Encodings.GSMEncoding());

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

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


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

Note

Before change mapping settings please clarify with SMPP provider which encoding is 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 ability to replace standard GSM 7 bit default alphabet table for 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));

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