[英]interpretation iso-8859-1
早上好,我遇到一個我不明白的問題,讓我解釋一下:
我正在基於微控制器Arduino和Android應用程序進行項目。 arduino從pop3命令恢復郵件並將其發送到Android應用程序。 兩者僅通過SMS進行通信。
問題是:我通過SMS Broadcaster在Android上收到消息以恢復字符串(字符串)。
這是郵件恢復對象的示例:
回復:[階段]技術=?iso-8859-1?Q?vari?==?iso-8859-1?B?6WVz?= de溝通
得到以下結果:
回復:[階段]技術變化溝通
可能要注意的是,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.
}
}
}
我發現自己已經收到了一個字符串消息。 我的本能是嘗試將自己編碼為“外殼”,但在此示例中我不了解如何編碼“ ed”。 澄清我的問題是:
標簽ISO中的“ Q”和“ B”有什么區別?
在我的示例中,第二個標簽應為ISO代碼“ ed”(如果單詞是膠粘的,請注意空格)。 但是,在文本的十六進制代碼[0-F] [0-F]之間沒有對應關系的情況下:6WVz
但是我可能走錯了路,如果您對這些問題有答案,或者可以通過其他方法解決?
還是謝謝你。
JM
它是RFC 2047編碼字。 Q
指定帶引號的可打印編碼,而B
表示base64。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.