我想開發一個smsc模擬器,它將發送deliver_sm到網關。現在我可以成功發送deliver_sm請求到網關。但是這次我需要發送Unicode字符作爲按摩體。當我嘗試發送unicode字符時,網關不能識別它。它顯示爲無效的關鍵字。現在我想我的16位按摩編碼是不正確的。這裏是我的代碼。如果可能,請給我更正的代碼。deliver_sm與unicode charecter請求
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, "");
}
我想它。我想印地文文本轉換在此馬納爾也::嘗試{ \t \t \t \t串串= 「हिंदिभाषा」; \t \t byte [] utf8 = string.getBytes(「UTF-8」); \t \t \t \t string = new String(utf8,「UTF-8」); \t \t System.out.println(string); \t \t}趕上(UnsupportedEncodingException E){ \t \t}但是當過我試圖編譯該代碼是示出這樣的:某些字符可以,T使用CP1252字符編碼.... – koushik
不,SMS使用被映射UTF-16(數據編碼= 8) – puzz