【问题标题】:unable to retrieve Unicode data correctly from GUI无法从 GUI 正确检索 Unicode 数据
【发布时间】:2013-05-20 09:36:30
【问题描述】:

我正在使用 jsms api 从电脑向手机发送 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();

【问题讨论】:

  • 重要的是 sms_gate 是否接受那些 unicode 字符或编码类型
  • @mKorbel 在我的第一种情况下,即直接输入文本时,它完美地发送出去,我在手机上得到了那个脚本。但是当我从TextArea中提取它时,似乎有一些问题
  • 您是否检查过您的数据库是否正确存储了文本?
  • @AaronDigulla 当我在 GUI 中显示数据库中的内容时,它会正确显示所有 unicode 字符。
  • 您是否单步执行SendUnicodeMessage 以确保消息编码正确?最后一个System.out.println 有效吗?

标签: java swing unicode character-encoding


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多