解释iso-8859-1

时间:2013-04-04 10:01:38

标签: android character-encoding

早上好,我遇到了一个我不理解的问题,让我解释一下:

我正在开发一个基于微控制器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

1 个答案:

答案 0 :(得分:0)

RFC 2047编码字。 Q指定引用可打印的编码,而B表示base64。