如果
String a = "=?gb2312?B?rtmsMCC2=?= " // is in GB2312 format.
我想将String a上面改为UTF-8格式。我如何在java中实现这一目标。
答案 0 :(得分:2)
这不是GB2312格式,它是MIME编码字,其中数据使用Base64编码,编码数据本身表示字符集GB2312中的文本。请参阅:http://en.wikipedia.org/wiki/MIME#Encoded-Word
要对此进行解码,您需要一个支持RFC2047 MIME编码字的解码器。例如,javax.mail中的MimeUtility.decodeWord()
另一种选择是完全自己解析它,但我会建议反对。但是步骤将是:
给出您的示例=?gb2312?B?rtmsMCC2=?=
=?
表示它是一个编码字gb2312
表示最终数据采用gb2312编码?B
表示他们的有效负载编码为Base64 ?
表示有效负载的开始rtmsMCC2=
是实际有效负载(作为Base64编码数据)?=
表示编码字的结尾rtmsMCC2=
(它似乎已损坏,但删除尾随的=
会产生字节AE D9 AC 30 20 B6
)AE D9 AC 30 20 B6
(我在这里没有这样做,因为我无法将这些字节映射到实际的gb2312字符)。