Запрос delivery_sm с символом Unicode
Я пытаюсь разработать симулятор smsc, который будет отправлять delivery_sm на шлюз. Теперь я могу успешно отправить запрос на доставку на шлюз. Но на этот раз мне нужно отправить символ Unicode в качестве тела для массажа. Когда я пытаюсь отправить символы 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, "");
}
2 ответа
Вам нужно установить
submitSM.setDataCoding((byte)(0x08)); // UCS-2
submitSM.setShortMessage( MessageStr, "UTF-16" );
Попробуйте вместо этого использовать кодировку UTF-8. Возможно, вам нужно будет на самом деле сначала закодировать свои данные.
Отказ от ответственности: я понятия не имею о deliver_sm
API, но SMS использует UTF-8. <- Я исправлен, USC-16 используется для сообщений, которые не соответствуют 7-битной и 8-битной кодировкам.