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.