strSubject = new String(strSubject.getBytes("gb2312"));
解决方案 »
- 解答下这几个问题 非常有意思的哦!! 在线等
- 新手有疑问
- 一个关于线程同步的问题
- 为什么executeBatch执行出来显示No row count was produced from executeBatch
- 急,在线等待,请问高手 我如何何动态调用方法和设定方法
- args 到底是什么
- 急待解决!!!急急急!!!数据库查询的问题
- 尽量避免使用DriverManager方法。遗憾的是,许多JDBC教科书中还在经常使用这种方法。
- ias6.5中应如何配置sybase的database?
- 新手有点问题想咨询下大神~~~!
- 菜鸟问题:请问Long 和 long的区别。
- 哪位大侠有Thinking In Java 2的解答?
=?GB2312?Q?=CE=D2=D7=D4=BC=BA=B5=C4email 1?= 是好像邮件的 mime 专用编码.需要改码.
我不知道如何改啊. subject = new String(com.sun.mail.util.ASCIIUtility.getBytes(subject)); sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
subject = "=?GB2312?B?"+enc.encode(subject.getBytes())+"?=";
subject = MimeUtility.encodeText(subject);
subject = new String(subject.getBytes("gb2312"));
不是字集问题.是编码,解码问题.
所以需要转换编码呀类型是text/plain 则需要经过
subject = new String((subject.getBytes("iso-8859-1")),"gb2312");
处理才能正确显示中文
可见是 gb2312 字符
更具不同的 字符集 进行相应的转换这是某位前人总结的: 研究研究看
public String getSubject()
throws MessagingException
{
String strSubject = "",temp="";
int pos = 0;
String strMailSubject[] = message.getHeader("Subject");
boolean flag = MailAccount.A;
String strCodingType = "";
if(strMailSubject == null)
{// System.out.println("邮件头空值,返回[没有主题]");
return subject;
}
else
{// System.out.println("原始长度 "+strMailSubject.length+" 内容 "+strMailSubject[0]);
if(strMailSubject[0].indexOf("=?GB_2312-80?") != -1)
strMailSubject[0] = StringUtil.replaceStr(strMailSubject[0], "=?GB_2312-80?", "=?GBK?");
try
{
if(strMailSubject[0].indexOf("=?ISO-8859-1?") != -1)
{
System.out.println("subject after decodeText =" + strMailSubject[0]);
strMailSubject[0] = new String(strMailSubject[0].getBytes("ISO-8859-1"));
}
else if(strMailSubject[0].indexOf("=?gb2312?") != -1)
{
strMailSubject[0] = new String(strMailSubject[0].getBytes("gb2312"));
}
else if(strMailSubject[0].indexOf("=?GB2312?") != -1)
{
strMailSubject[0] = new String(strMailSubject[0].getBytes("gb2312"));
}
else if(strMailSubject[0].indexOf("=?GBK?") != -1)
{
strMailSubject[0] = new String(strMailSubject[0].getBytes("GBK"));
}
else if(strMailSubject[0].indexOf("=?big5?") != -1)
strMailSubject[0] = new String(strMailSubject[0].getBytes("big5"));
else
{//正常字符集:ISO8859_1-->gb2312;主题ISO-8859-1-->gb2312;ISO-8859-1-->GBK;
strMailSubject[0] = new String(strMailSubject[0].getBytes("ISO-8859-1"), "gb2312");
}
strMailSubject[0] = MimeUtility.decodeText(strMailSubject[0]);
}
catch(UnsupportedEncodingException unsupportedencodingexception)
{
unsupportedencodingexception.printStackTrace();
cat.error("UnsupportedEncoding", unsupportedencodingexception);
} } this.subject = strMailSubject[0];
if(subject == null)
subject = "";
return subject;
}
System.out.println("Subject = " + msg.getSubject());
所以是quote格式文件.必须解码才能的到.
我也遇到了这个问题,你可不可以把你解决的方法说的具体一点?