无法从GUI正确检索Unicode数据

时间:2013-05-20 09:36:30

标签: java swing unicode character-encoding

我使用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();

1 个答案:

答案 0 :(得分:1)

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

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

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