我使用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();
答案 0 :(得分:1)
你的主要问题是计算机无法在屏幕上神奇地绘制字符。它们不仅需要字体,还需要包含要显示的字符的字体。这个问题的一个线索是一个小的空矩形而不是你需要的角色。如果你看到了,你的字体就没用了。
所以你要做的第一件事就是找到一个可以显示文字的字体。接下来,您需要在任何需要的地方安装该字体。这也意味着将其安装在手机上。查看手机操作系统的说明,了解如何操作。
不要将此问题与看?
混淆。矩形表示“有效字符,但字体无法显示”。输出中的问号意味着在整个过程的某个地方,en- /解码被破坏了。例如,当您在一侧输出UTF-8并在另一侧读取UTF-16时会发生这种情况。