Отправьте Unicode SMS через SMPP - PullRequest
3 голосов
/ 08 июня 2011

Я хочу отправить смс с юникод-символами через SMPP (библиотека JSMPP). Я знаю, что кодировка данных должна быть 8, а длина сообщения - 70 символов. Но когда я пытаюсь это сделать, я получаю смс с китайскими символами. Вот мой код:

ESMClass esmClass = new ESMClass();
GeneralDataCoding coding = new GeneralDataCoding(8)
String text = "üöğçşə ƏIÖĞŞÇÜ";
String p = HexUtil.convertStringToHexString(text);
byte[] textByte = HexUtil.convertHexStringToBytes(p);

String messageId = session.submitShortMessage("CMT",TypeOfNumber.INTERNATIONAL,
                   NumberingPlanIndicator.UNKNOWN,"1111", TypeOfNumber.INTERNATIONAL,
                   NumberingPlanIndicator.UNKNOWN, "phone_number", esmClass,
                   (byte) 0, (byte) 1, timeFormatter.format(new Date()), null,
                   new RegisteredDelivery(SMSCDeliveryReceipt.DEFAULT),
                   (byte) 0, coding, (byte) 0, textByte);

После этого я получаю сообщение с китайскими символами. Что не так?

Ответы [ 2 ]

3 голосов
/ 13 июня 2012

Это должно быть

byte[] textByte = text.getBytes("UTF-16BE");

HexUtil здесь красная сельдь.

2 голосов
/ 07 апреля 2014

Не преобразовывать строку в шестнадцатеричную строку и использовать эту кодировку данных вместо:

GeneralDataCoding dataCoding = new GeneralDataCoding(false, true, MessageClass.CLASS1, Alphabet.ALPHA_UCS2);

Получить байты:

byte[] textByte = text.getBytes("UTF-16BE");

В этом примере вы отправляете смс с этим набором символовUCS2.

...