3

SMPP (JSMPP ライブラリ) 経由で Unicode 文字を含む SMS を送信したい。データ エンコーディングは 8 でなければならず、SMS の長さは 70 文字であることを知っています。しかし、これを試してみると、中国語の記号が含まれた SMS が届きます。これが私のコードです:

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);

この後、中国の記号でメッセージを受け取ります。なにが問題ですか?

4

2 に答える 2

3

そのはず

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

HexUtilここでは赤いニシンです。

于 2012-06-13T08:40:24.677 に答える
2

文字列を 16 進文字列に変換せず、代わりに次のデータ コーディングを使用します。

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

取得バイト:

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

このサンプルでは、​​この文字セット UCS2 を使用して SMS を送信できます。

于 2014-04-07T10:36:44.927 に答える