<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    風行天下

    JAVA太極
    posts - 4, comments - 10, trackbacks - 0, articles - 55
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Javamail 中附件中文名字亂碼祥解

    Posted on 2005-04-19 14:39 風太少 閱讀(372) 評論(0)  編輯  收藏
    現在研究javamail的人越來越多,現在我就談談在javamail中大家都會遇到的附件中文問題,由于sun的java的中文問題,導致當附件是中文時將出現亂碼,導致程序異常,如何避免呢??我在學習javamail時采用如下方法首先對郵件體進行分析,首先判斷郵件體是否有附件:
     Object out_content = messag[i].getContent();
     if (!(out_content instanceof Multipart)){//不是復合郵件體,既是不帶附件。
                  partname = new String[0];
                  return partname;
               }

    如果是復合郵件體,那么就可以調用如下的方法取得中文文件名:
    public  static  String  getISOFileName(Part  body){  
                   //設置一個標志,判斷文件名從Content-Disposition中獲取還是從Content-Type中獲取  
                  
     boolean  flag=true;  
                   if(body==null){  
                           return  null;  
                   }  
                   String[]  cdis;  
                   try{  
                           cdis=body.getHeader("Content-Disposition");  
                   }  
                   catch(Exception  e){  
                           return  null;  
                   }  
                   if(cdis==null){  
                           flag=false;  
                   }  
                   if(!flag){  
                           try{  
                                   cdis=body.getHeader("Content-Type");  
                           }  
                           catch(Exception  e){  
                                   return  null;  
                           }  
                   }  
                   if(cdis==null){  
                           return  null;  
                   }  
                   if(cdis[0]==null){  
                           return  null;  
                   }  
                   //從Content-Disposition中獲取文件名  
                   if(flag){  
                           int  pos=cdis[0].indexOf("filename=");  
                           if(pos<0){  
                                   return  null;  
                           }  
                           //如果文件名帶引號  
                           if(cdis[0].charAt(cdis[0].length()-1)=='"'){  
                                   return  cdis[0].substring(pos+10,cdis[0].length()-1);  
                           }  
                           return  cdis[0].substring(pos+9,cdis[0].length());  
                   }else{  
                           int  pos=cdis[0].indexOf("name=");  
                           if(pos<0){  
                                   return  null;  
                           }  
                           //如果文件名帶引號  
                           if(cdis[0].charAt(cdis[0].length()-1)=='"'){  
                                   return  cdis[0].substring(pos+6,cdis[0].length()-1);  
                           }  
                           return  cdis[0].substring(pos+5,cdis[0].length());  
                   }  
           }  

    但是有一種情況下,取得的中文文件名也是亂碼,原因有的郵件服務器在發送郵件時,對附件名進行了特殊的編碼,解決如上問題的方法如下:
    首先:
    1)用如上的方法取得中文文件名:
    String filename= new String(getISOFileName(part).getBytes("ISO-8859-1"),"gb2312");
    然后創建文件,如果發生FileNotFoundException異常,說明取得的文件名是經過特殊編碼的--我們取得到的未解碼的,是亂嗎,那么就要用javamail提供的函數decodeText進行解碼。具體方法如下。
    try{
            myFileoutputstream= new FileOutputStream(filename);
        }catch(FileNotFoundException fe){
            try{
                  if (filepath.exists()){
                     filename = new File(filepath,MimeUtility.decodeText(getISOFileName(part)));
       }catch(Exception e){
        System.out.println("getpart(int i)重新生成文件:"+e.toString());
        }
       }catch(Exception e){
        System.out.println("getpart(int i)重新生成文件:"+e.toString());
        }
    }


    經過如上步驟,就能徹底解決javamail附件中文名亂碼問題了。
    祝你好運,如果還有任何疑問,歡迎切磋,我的郵件:



    bill-轉自:csdn




    參與論壇討論:http://www.matrix.org.cn/forum.asp
    更多技術文章:http://www.matrix.org.cn/article.asp
    Matrix java門戶:http://www.matrix.org.cn
    原文地址:http://www.matrix.org.cn/article/1427.html
    任何獲得許可轉載此文章,須在顯著位置標明Matrix的原文地址,并做鏈接至原文頁面,查看詳細的版權說明

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲人成伊人成综合网久久久 | 日韩一级免费视频| 亚洲免费视频观看| 国产高清不卡免费在线| 亚洲AV第一页国产精品| 四虎影视成人永久免费观看视频 | 巨胸喷奶水视频www网免费| 亚洲午夜电影一区二区三区| 57pao一国产成视频永久免费| 亚洲欧洲日产专区| 在线免费观看色片| 免费无码专区毛片高潮喷水 | 亚洲色图国产精品| 亚洲免费在线视频播放| 亚洲欧洲国产成人精品| 成人无码区免费A片视频WWW| 亚洲精品伊人久久久久| 国产性生交xxxxx免费| 国产JIZZ中国JIZZ免费看| 亚洲AV永久纯肉无码精品动漫| 日日麻批免费40分钟无码| 亚洲嫩草影院在线观看| 女人18毛片特级一级免费视频| 美女一级毛片免费观看| 亚洲国产精品无码久久SM| 99久久久国产精品免费无卡顿| 亚洲av永久无码天堂网| 亚洲中文字幕无码不卡电影| 亚洲一区免费观看| 亚洲偷自拍另类图片二区| 国产成人精品亚洲精品| 24小时在线免费视频| 亚洲国产精品自在自线观看| 国产亚洲成归v人片在线观看| 最近免费视频中文字幕大全| 亚洲日韩亚洲另类激情文学| 国产成人精品亚洲精品| 一个人免费观看www视频在线| 日本特黄特色AAA大片免费| 18亚洲男同志videos网站| 国产成人免费手机在线观看视频|