|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。办理|成绩|中文|中文乱码在利用javamailapi开辟邮件服务体系时,我们经常会碰着良多中文乱码成绩,上面就分离先容怎样办理这些成绩。
1.发送称号含中文的附件到邮件服务器,用其余邮件吸收程序吸收到的附件名显现为乱码
办理举措:
在挪用MimeBodyPart的setFileName()时利用Base64编码。比方:
- BASE64Encoderenc=newBASE64Encoder();//该类位于jre/lib/rt.jar中
- //fds为FileDataSource实例
- mbp.setFileName("=?GBK?B?"+enc.encode((fds.getName()).getBytes())+"?=");
2.吸收邮件时,猎取某些邮件发送程序发送的email地点,发送地点显现为乱码
办理举措:
对含有中文的发送地点,利用MimeUtility.decodeTex办法,对其他则把地点从ISO8859_1编码转换成gbk编码,见下例
- publicstaticStringgetFrom(Messagemsg){
- Stringfrom="";
- try{
- if(msg.getFrom()[0]!=null)
- from=msg.getFrom()[0].toString();
- if(from.startsWith("=?GB")||from.startWith(“=?gb”)){
- from=MimeUtility.decodeText(from);
- }else{
- from=StringUtil.toChinese(from);
- }
- }catch(Exceptione){
- e.printStackTrace();
- }
- from=StringUtil.replaceStr(from,“<”,“<”);//replaceStr为字符串交换函数
- from=StringUtil.replaceStr(from,">",">");
- returnfrom;
- }
- ///////////////////StringUtil的toChinese办法//////////////////////////
- publicstaticStringtoChinese(Stringstrvalue){
- try{
- if(strvalue==null)
- returnnull;
- else{
- strvalue=newString(strvalue.getBytes("ISO8859_1"),"GBK");
- returnstrvalue;
- }
- }catch(Exceptione){
- returnnull;
- }
- }
3.吸收邮件时,猎取某个邮件的中文附件名,呈现乱码
办理举措:
关于用base64编码过的中文,则接纳base64解码,不然对附件名举行ISO8859_1到gbk的编码转换,比方:
- Stringtemp=part.getFileName();//part为Part实例
- if((temp.startsWith("=?GBK?B?")&&temp.endsWith("?="))
- ||(temp.startsWith("=?gbk?b?")&&temp.endsWith("?="))){
- temp=StringUtil.getFromBASE64(temp.substring(8,temp.indexOf("?=")-1));
- }else{
- temp=StringUtil.toChinese(temp);//该办法如前所叙
- }
- /////////////StringUtil的getFromBASE64办法/////////
- publicstaticStringgetFromBASE64(Strings){
- if(s==null)returnnull;
- BASE64Decoderdecoder=newBASE64Decoder();
- try{
- byte[]b=decoder.decodeBuffer(s);
- returnnewString(b);
- }catch(Exceptione){
- returnnull;
- }
- }
乱码成绩的调试步骤总结:
基础上在javamail中碰着的中文乱码成绩就这么多了,假如你的程序呈现了中文乱码,起首不要惊惶,可用多个其他的邮件发送或吸收程序举行考证,看是在哪一个环节呈现了成绩,然后再细心对比原文和乱码,挪用响应的编码解码办法就好了。
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大. |
|