0

我正在使用 jsms api 从 pc 向手机发送 unicode 消息。当我使用这部分代码时,它可以完美运行。我收到完美显示“ఈ ఒక తెలుగు సందేశం”的消息。

    SmsMessage msg = new SmsMessage();      
    msg.setRecipient("+919561356345");   

    String unicodeMsg = "ఈ ఒక తెలుగు సందేశం";   //telugu script   

    msg.setUserData(unicodeMsg.getBytes("UTF-16BE"));
    msg.setCodingGroup(SmsMessage.DC_GROUP_GENERAL);      
    msg.setAlphabet(SmsMessage.DC_UCS2);        
    msg.setMessageClass(SmsMessage.NO_CLASS);

      service.init(props);
      service.connect();
      service.sendMessage(msg);
      System.out.println("Message sent successfuly,  "+msg.getMessage());           
      service.disconnect();

现在在代码中,如果我从数据库中检索相同的消息内容以摆动 TextArea,然后在此处提取它,我会在手机上收到一条空白消息。转换有问题吗?这是我的代码:

// here the argument text is taMessage.getText() where taMessage is TextArea;    
public SendUnicodeMessage(String port, String text, Object no){

    SmsMessage msg = new SmsMessage();
           String num = no.toString();
           msg.setRecipient(num);  

        String unicodeMsg = text.toString ; 

            msg.setUserData(unicodeMsg.getBytes("UTF-16BE"));
            msg.setCodingGroup(SmsMessage.DC_GROUP_GENERAL);      
            msg.setAlphabet(SmsMessage.DC_UCS2);              
            msg.setMessageClass(SmsMessage.NO_CLASS);             
            service.init(props);
            service.connect();
            service.sendMessage(msg);         
            System.out.println("Message sent successfuly,  "+msg.getMessage());       
              service.disconnect();
4

1 回答 1

1

您的主要问题是计算机无法在屏幕上神奇地绘制字符。他们不仅需要字体,还需要包含您要显示的字符的字体。这个问题的一个线索是一个小的空矩形,而不是你需要的字符。如果你看到了,你的字体就没用了。

所以你要做的第一件事就是找到一种可以显示你的文本的字体。接下来,您需要在任何需要的地方安装该字体。这也意味着将其安装在您的手机上。查看手机操作系统的说明,了解如何操作。

不要将这个问题与看到混淆?。矩形表示“有效字符但字体无法显示”。输出中的问号意味着在整个过程中的某个地方,编码/解码被破坏了。例如,当您在一侧输出 UTF-8 并在另一侧读取 UTF-16 时,就会发生这种情况。

于 2013-05-20T22:09:21.173 回答