2012-08-13 4 views
0

jSMPP에서 UniCode SMS를 받고 싶습니다.UniCode SMS 허용

데이터 코딩이 8이면 유니 코드 기호로 변환하고 싶습니다.

여기서는 HexUtil.convertBytesToHexString 기능을 사용합니다.

그러나 올바르게 변환하지 않습니다. 이 문자열을 어떻게 변환 할 수 있습니까?

 @Override 
    public void onAcceptDeliverSm(DeliverSm arg0) 
      throws ProcessRequestException { 
     if (MessageType.SMSC_DEL_RECEIPT.containedIn(arg0.getEsmClass())) { 
      // Deliver SM 
     } else { 
      byte[] data = arg0.getShortMessage(); 
      String text = null; 

      if (arg0.getShortMessage() != null) { 
       if (arg0.getDataCoding() == (byte) 8) { 
        text = HexUtil.convertBytesToHexString(data, 0, 
          data.length); 
       } else { 
        text = new String(data); 
       } 
      } 

        System.out.println("Text -> " + text); 
     } 
    } 
+0

어떻게하면 u는 UTF-16LE, UTF-16BE 인코딩을 시도 할 수 있습니다 너는 너의 끈을 얻는거야? 코드 붙여 넣기 – HashimR

+0

나는 'getShortMessage'메서드를 사용하여 DeliverSm에서 가져옵니다. – totali

답변

1

이 방법을 사용해보십시오 (사용하면 인코딩 자신의 탐지) : 또한

 if (msg.getEncoding().equals(Message.MessageEncodings.ENC7BIT)) { 
      text = msg.getText(); 
     } else if (msg.getEncoding().equals(Message.MessageEncodings.ENCUCS2)) { 
      try { 
       text = new String(msg.getText().getBytes(), "UTF-16"); 
      } catch (Exception ex) { 
       Logger.getLogger("smpp").error("Can't parce USC2 text: " + msg.getText() + ", " + ex.getMessage()); 
      } 
     } 

올바른 UTF-16 해달라고 표시