早上好,我遇到了一个我不理解的问题,让我解释一下:
我正在开发一个基于微控制器Arduino和Android应用程序的项目。 arduino从pop3命令恢复邮件并将它们发送到Android应用程序。 这两个人只通过短信进行沟通。
问题是: 我通过SMS Broadcaster在Android上收到消息,然后恢复一个字符串(String)。
以下是邮件恢复对象的示例:
Re:[阶段]技术=?iso-8859-1?Q?vari?= =?iso-8859-1?B?6WVz?= de communication
这给出了以下结果:
Re:[舞台]技术变通信
可以注意到,只有一些文本在ISO中以两种不同的方式编码。
我的问题是: 我该如何解析文本? 问题是使用SMS传输我没有选择返回类型。 这是我用来阅读短信的代码:
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[])bundle.get("pdus");
SmsMessage[] message = new SmsMessage[pdus.length];
String messageBody = null;
String phoneNumber = null;
for (int i=0; i< message.length;i++) {
message[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
}
messageBody = message[0].getMessageBody();
phoneNumber = message[0].getDisplayOriginatingAddress();
if (message.length > -1) {
if (phoneNumber.equals(arduino)) {
Toast.makeText(context, "New Data",Toast.LENGTH_SHORT ).show();
//this.abortBroadcast();
Log.d("BroadcastSMS", "***************phoneNumber:"+phoneNumber+" messageBody:"+messageBody);
//TODO : ici, que faire du message "messageBody" pour l'interpréter.
}
}
}
我发现自己已经将消息作为字符串。 我的直觉是尝试将自己编码为“shell”,但我不明白在这个例子中如何编码“ed”。 澄清我的问题是:
标签ISO中“Q”和“B”之间有什么区别?
在我的例子中,第二个标签应该是ISO代码“ed”(注意空格,如果单词是胶合的)。但我不是在十六进制代码[0-F] [0-F]之间的对应关系,文本是:6WVz
但我可能走错路, 如果您对这些问题有答案,或者其他方法可以帮助我吗?
无论如何,提前谢谢你。
JM