邮件?=CE=D2=这中码如何改决.高手请进 strSubject = new String(strSubject.getBytes("gb2312")); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 下边的方法我都用过了,都不行 ~~~~~~~~~~~~~~~~~~~~~在帮忙. =?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")); to: telenths(_非法操作_) 不是字集问题.是编码,解码问题. 哦,是中文的问题strMail = new String(strMail.getBytes("ISO_8859_1"),"gb2312");OK,搞定 to: Leomonkey(#*@*#) 不是字集问题.是编码,解码问题. 是编码的问题所以需要转换编码呀类型是text/plain 则需要经过 subject = new String((subject.getBytes("iso-8859-1")),"gb2312");处理才能正确显示中文 subject = "=?GB2312?B?"+enc.encode(subject.getBytes())+"?=";可见是 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; } msg.setHeader("Subject",value);System.out.println("Subject = " + msg.getSubject()); 终于搞定. 总结一下.我本来就是GB2312所以不需要字集的转换.应邮件发送格式为multipart/mixed所以是quote格式文件.必须解码才能的到. To:CAYU(中原)我也遇到了这个问题,你可不可以把你解决的方法说的具体一点? awt更改标题栏小咖啡图标 连接sqlserver报错 JList怎么更新啊? 一个关于java awt中监听器的问题 如何解决一个10的四次方左右长度的0/1字符串运算的问题(牛人帮忙啊) 关于java的xml解析器的问题 初看java,有点不明白,望诸位指教 写properties文件一个奇怪的问题?帮忙解决一下 那位有jcreator 的注册码? 初学者问题:关于this 菜鸟问题:请问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格式文件.必须解码才能的到.
我也遇到了这个问题,你可不可以把你解决的方法说的具体一点?