0

delivery_sm をゲートウェイに送信する smsc シミュレーターを開発しようとしています。これで、deliver_sm 要求をゲートウェイに正常に送信できるようになりました。しかし、今回はメッセージ本文として Unicode 文字を送信する必要があります。 . メッセージの 16 ビット エンコーディングが正しくないと思います。これが私のコードです。可能であれば、修正されたコードを教えてください。

try {

    ByteBuffer ed = new ByteBuffer();
    DeliverSM request = new DeliverSM();

    private String message="text";
    private SimulatorPDUProcessor proc;

    request.setEsmClass((byte)Data.SM_UDH_GSM); //Set UDHI Flag Data.SM_UDH_GSM=0×40
    request.setDataCoding((byte) ((byte) 0*04));

    ed.appendByte((byte) 6); // UDH Length
    ed.appendByte((byte) ((byte) 0*04)); // IE Identifier
    ed.appendByte((byte) 4); // IE Data Length
    ed.appendByte((byte) 00) ; //Reference Number 1st Octet
    ed.appendByte((byte) 00) ; //Reference Number 2nd Octet

    try {
        ed.appendString(message, Data.ENC_UTF16_BE);
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    request.setShortMessage(message,Data.ENC_UTF16);

    request.setSourceAddr("sourceAdd");
    request.setDestAddr("919865851257");
    proc.serverRequest(request);

    System.out.println("Message sent.");
    try {
        generateResult(sourceAdd,"sent");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
} catch (WrongLengthOfStringException e) {
    System.out.println("Message sending failed ");
    event.write(e, "");
}
4

2 に答える 2

1

セットが必要です

submitSM.setDataCoding((byte)(0x08)); // UCS-2
submitSM.setShortMessage( MessageStr, "UTF-16" );
于 2012-01-06T09:45:52.713 に答える
0

代わりにUTF-8エンコーディングを使用してみてください。おそらく、最初に実際にデータをエンコードする必要があります。

免責事項:deliver_smAPIについてはわかりませんが、SMSはUTF-8を使用します。<-私は正直に言って、USC-16は7ビットおよび8ビットのエンコーディングに適合しないメッセージに使用されます。

于 2011-09-16T03:52:44.347 に答える