I've observed some oddities sending messages to SMPP that require UCS-2
(16 bit / Unicode) encoding
To make it work, I have to explicitly set:
alphabet=-1 in the endpoint config
CamelSmppDataCoding=8 in the exchange headers
and leave other headers and config settings empty/default
Automatic detection of encoding doesn't seem to work, so I have to scan
each message myself and then make those settings when necessary on a
per-message basis.
Given alphabet=-1 in the endpoint config, I also have to explicitly set
CamelSmppAlphabet= ALPHA_DEFAULT for those messages that don't require
UCS-2 treatment
I made a quick review of the code and various things caught my eye:
- the header Exchange.CHARSET_NAME is never checked, it could be more
useful than the "encoding" param in the endpoint config perhaps?
- in SmppSmCommand:
why does determineCharset() only return UCS2_ENCODING for
UNKNOWN_ALPHABET and not for ALPHA_UCS2?
why does determineAlphabet() only use the charset configured in the
endpoint? This seems like a good place to use Exchange.CHARSET_NAME