0

おはようございます、理解できない問題に遭遇しました。説明させてください。

私は、マイクロコントローラ Arduino と Android アプリに基づくプロジェクトに取り組んでいます。arduino は pop3 コマンドからメールを復元し、Android アプリケーションに送信します。両者は SMS のみを介して通信します。

問題は次のとおりです。SMSブロードキャスターを介してAndroidでメッセージを取得し、文字列(文字列)を回復します。

以下は、メールが復元されたオブジェクトの例です。

Re: [ステージ] テクニック =?iso-8859-1?Q?vari?= =?iso-8859-1?B?6WVz?=デ通信

これにより、次の結果が得られます。

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.
            }
        }
    }

私はすでにメッセージを文字列として持っていることに気づきました。私の本能は自分自身を「シェル」にコーディングしようとすることでしたが、この例で「ed」がどのようにコーディングされているかわかりません。私の質問を明確にしてください:

  • タグ ISO の「Q」と「B」の違いは何ですか?

  • 私の例では、2 番目のタグは ISO コード「ed」にする必要があります (単語がくっついている場合は、スペースに注意してください)。しかし、テキストの 16 進コード [0-F] [0-F] の間の対応の場合ではありません: 6WVz

しかし、私は間違った方向に進んでいる可能性があります。これらの質問に対する回答または他の方法があれば、私を助けてくれませんか?

とにかく事前にありがとう。

JM

4

1 に答える 1

0

これはRFC 2047エンコードされた単語です。は base64 用ですが、Q引用された印刷可能なエンコーディングを指定します。B

于 2013-04-04T10:29:21.520 に答える