如果
String a = "=?gb2312?B?rtmsMCC2=?= " // is in GB2312 format.
我想要上面的 String a 到 UTF-8 格式。我如何在java中实现这一点。
那不是 GB2312 格式,它是一种 MIME 编码字,其中数据使用 Base64 编码,并且编码数据本身表示字符集 GB2312 中的文本。请参阅:http ://en.wikipedia.org/wiki/MIME#Encoded-Word
要对此进行解码,您需要一个支持 RFC2047 MIME Encoded-Word 的解码器。例如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 字符)。