问题描述:
邮件的标题为:測試家意專家
取到的头信息为:Subject:=?gb2312?B?Pz+80tLiP7zS?=
通过getSubject方法取到的字符串繁体乱码:类似于??家意?家
原因分析:
头信息的含义为:Subject:=?chartset?encoding?word?=,即上文中的标题是gb2312编码,base64加密
繁体乱码的原因是:gb2312不支持繁体,但标题中就是有繁体。
测试实验:
String str="測試家意專家";
String test=base64Encoder.encode(str.getBytes("GB2312"));//"Pz+80tLiP7zS"
//测试:先解密,再用GBK编码
String result1=new String(base64Decoder.decodeBuffer(test),"GBK");
// result1 : ??家意?家
ASCII码63 就是 “?”,也就是说繁体字在被gb2312解码时,因为无法识别,全部设为?,无法被还原。
所以虽然头信息中写的gb2312,实际可能用的是gbk
//1.测试2
解决方案:
把mail包中的 getSubject()及相关的方法cv复制下来,然后加个判断如果编码是gb2312就换成gbk。