当前位置: 技术问答>java相关
关于JAVAMAIL收邮件的中文乱码问题的解决方案!!!总结CSDN的几种方法。有问题,请入内解决啊!!!
来源: 互联网 发布时间:2015-02-11
本文导语: 1。 String subject = m.getSubject(); m.setContent(subject, "text/html; charset=gb2312"); System.out.println(subject); 但message为read-only,报错: javax.mail.IllegalWriteException: POP3 messages are read-only 2。 subject = new String(subject.getBytes("ISO8859_...
1。
String subject = m.getSubject();
m.setContent(subject, "text/html; charset=gb2312");
System.out.println(subject);
但message为read-only,报错:
javax.mail.IllegalWriteException: POP3 messages are read-only
2。
subject = new String(subject.getBytes("ISO8859_1"));
subject = new String(subject.getBytes("gb2312"),"ISO8859_1");
也不行啊,乱码依旧。
3。
javamail在jsp中调用 目前JAVAMAIL支持的汉字编码方式有 gb2312,GBK,utf-8,iso-88
59-1,us-assic共5种,解码的函数在类MimeUtility中,叫做decodeText,如果采用前三种方式
,直接得到中文。后两种还需要自己再编个小函数解码,才能显示中文, javamail里的getS
ubject()会自动解码,但不会区分是否需要getstr,所以不直接使用getSubject(),而应该使用
getHeader() 函数如下:(附例子,是经过修改的getSubject)
public static String getstr(String str) {
try {
String temp_p=str;
byte[] temp_t=temp_p.getBytes(“ISO8859-1“);
String temp=new String(temp_t);
return temp;
} catch(Exception e) {
return ““;
}
}
例子:
public String getsubject(message m) throws Exception {
boolean bgetstr; String temps;
String[] ta1=m.getHeader(“Subject“);
String _subject;
if (ta1!=null)
_subject=ta1[0];
else
_subject=““;
if (_subject.indexOf(“=?gb2312“)!=-1 ¦¦ _subject.indexOf(“=?GBK“)!=-1 ¦¦
_subject.indexOf(“=?utf-8“)!=-1)
bgetstr=false;
else bgetstr=true;
try{
temps=MimeUtility.decodeText(_subject);
} catch(UnsupportedEncodingException E) {
return _subject;
} if (temps.length()==0) {
temps=“(无主题)“;
bgetstr=false;
} if (bgetstr==false)
return temps;
else
return getstr(temps);
}
很麻烦,不好用。
请教高手的解决方法,我是在JSP里面调用收邮件的BEAN,然后显示出来。
String subject = m.getSubject();
m.setContent(subject, "text/html; charset=gb2312");
System.out.println(subject);
但message为read-only,报错:
javax.mail.IllegalWriteException: POP3 messages are read-only
2。
subject = new String(subject.getBytes("ISO8859_1"));
subject = new String(subject.getBytes("gb2312"),"ISO8859_1");
也不行啊,乱码依旧。
3。
javamail在jsp中调用 目前JAVAMAIL支持的汉字编码方式有 gb2312,GBK,utf-8,iso-88
59-1,us-assic共5种,解码的函数在类MimeUtility中,叫做decodeText,如果采用前三种方式
,直接得到中文。后两种还需要自己再编个小函数解码,才能显示中文, javamail里的getS
ubject()会自动解码,但不会区分是否需要getstr,所以不直接使用getSubject(),而应该使用
getHeader() 函数如下:(附例子,是经过修改的getSubject)
public static String getstr(String str) {
try {
String temp_p=str;
byte[] temp_t=temp_p.getBytes(“ISO8859-1“);
String temp=new String(temp_t);
return temp;
} catch(Exception e) {
return ““;
}
}
例子:
public String getsubject(message m) throws Exception {
boolean bgetstr; String temps;
String[] ta1=m.getHeader(“Subject“);
String _subject;
if (ta1!=null)
_subject=ta1[0];
else
_subject=““;
if (_subject.indexOf(“=?gb2312“)!=-1 ¦¦ _subject.indexOf(“=?GBK“)!=-1 ¦¦
_subject.indexOf(“=?utf-8“)!=-1)
bgetstr=false;
else bgetstr=true;
try{
temps=MimeUtility.decodeText(_subject);
} catch(UnsupportedEncodingException E) {
return _subject;
} if (temps.length()==0) {
temps=“(无主题)“;
bgetstr=false;
} if (bgetstr==false)
return temps;
else
return getstr(temps);
}
很麻烦,不好用。
请教高手的解决方法,我是在JSP里面调用收邮件的BEAN,然后显示出来。
|
1、POP3收邮件当然不能
String subject = m.getSubject();
m.setContent(subject, "text/html; charset=gb2312");//用于发邮件
2 、
subject = new String(subject.getBytes("iso-8859-1"),"GB2312");
3、
public static String getstr(String string){
String returnValue="";
try{
if (string!=null){
returnValue=new String(string.getBytes("iso-8859-1"),"GB2312");
}
}catch(Exception e){}
return null;
}
String subject = m.getSubject();
m.setContent(subject, "text/html; charset=gb2312");//用于发邮件
2 、
subject = new String(subject.getBytes("iso-8859-1"),"GB2312");
3、
public static String getstr(String string){
String returnValue="";
try{
if (string!=null){
returnValue=new String(string.getBytes("iso-8859-1"),"GB2312");
}
}catch(Exception e){}
return null;
}