如果
String a = "=?gb2312?B?rtmsMCC2=?= " // is in GB2312 format.我想以上字符串a到UTF-8格式。如何在java中实现这一点。
发布于 2012-11-02 12:40:18
这不是GB2312格式,而是MIME编码的字,其中数据是使用Base64编码的,编码数据本身表示字符集GB2312中的文本。请参阅:http://en.wikipedia.org/wiki/MIME#Encoded-Word
要对此进行解码,您需要一个支持RFC2047 MIME编码字的解码器。例如,MimeUtility.decodeWord() in javax.mail
另一种选择是完全由自己来解析,但我建议您不要这么做。然而,这些步骤将是:
给出你的例子=?gb2312?B?rtmsMCC2=?=
=?表示它是一个编码字。gb2312表示最终数据采用gb2312编码。?B表示它们的有效载荷是编码的Base64。?指示有效载荷的开始rtmsMCC2=是实际的有效载荷(作为Base64编码的数据)?=表示编码字的结尾。rtmsMCC2=解码Base64 (它似乎损坏了,但是删除尾随的=会导致字节AE D9 AC 30 20 B6)AE D9 AC 30 20 B6编码转换字节gb2312 (我在这里不这么做,因为我很难将这些字节映射到实际的gb2312字符)。https://stackoverflow.com/questions/13194883
复制相似问题