亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

jsp SmartUpload 中文亂碼問題解決

2024-09-05 00:22:33
字體:
來源:轉載
供稿:網友
這篇文章主要介紹jsp中SmartUpload中文亂碼問題的解決,比較實用,需要的朋友可以參考下。
 

在用jspsmartupload組件進行文件上傳下載的時候,如果用戶選擇的是含有中文名字的文件名或是文件路徑含有中文,則會出現亂碼.經過一段時間的調試,本人已經初步解決了這個問題.現將解決的代碼貼出來.

一、上傳

在SmartUpload.java文件中,增加一個屬性private String charset用于進行字符編碼轉換,相應的有兩個方法:

 

復制代碼代碼如下:
public void setCharset(String charset)
{
    this.charset = charset;
}
public String getCharset()
{
    return this.charset;
}

 

另外改動二個地方:

在upload()方法中,將String s11 = new String(m_binArray,m_startData,(m_endData - m_startData) + 1);改為

 

復制代碼代碼如下:
String s11 = new String(m_binArray,m_startData,(m_endData - m_startData) + 1,this.getCharset());

 

這個時候我們應該在進行處理上傳的jsp中進行設置

復制代碼代碼如下:
SmartUpload su?。健ew SmartUpload();
su.setCharset("UTF-8");

就可以了.

 

在getDataHeader()方法中,將String s = new String(m_binArray, i, (j - i) + 1);改為

 

復制代碼代碼如下:
String s;
try
{
    s = new String(m_binArray, i, (j - i) + 1,this.getCharset());
}
catch(Exception e)
{
    s = "";
}

 

在SmartFile.java文件中,增加一個屬性private String charset用于進行字符編碼轉換,相應的有兩個方法:

 

復制代碼代碼如下:
public void setCharset(String charset)
{
    this.charset = charset;
}
public String getCharset()
{
    return this.charset;
}

 

另外需要改動一個地方
在getContentString()方法中,將String s = new String(m_parent.m_binArray,m_startData,m_size);改為

 

復制代碼代碼如下:
String s;
try
{
    s = new String(m_parent.m_binArray,m_startData,m_size,this.getCharset());
}
catch(Exception e)
{
    s = "";
}

 

對于SmartFile.java文件中,本人認為可改可不改,不會對上傳有什么影響.
經過如此改動源代碼后,對于中文亂碼問題有很好的解決能力.

二、下載
在SmartUpload.java文件中,將downloadFile(String s, String s1, String s2, int i)方法改為

 

復制代碼代碼如下:
public void downloadFile(String s, String s1, String s2, int i)
throws ServletException, IOException, SmartUploadException
{
    if(s == null)
        throw new IllegalArgumentException("File '" + s +
            "' not found (1040).");
    if(s.equals(""))
        throw new IllegalArgumentException("File '" + s +
            "' not found (1040).");
        if(!isVirtual(s) && m_denyPhysicalPath)
            throw new SecurityException("Physical path is
                denied (1035).");
    if(isVirtual(s))
        s = m_application.getRealPath(s);
    java.io.File file = new java.io.File(s);
    FileInputStream fileinputstream = new FileInputStream(file);
    long l = file.length();
    boolean flag = false;
    int k = 0;
    byte abyte0[] = new byte[i];
    if(s1 == null)
        m_response.setContentType("application/x-msdownload");
    else if(s1.length() == 0)
        m_response.setContentType("application/x-msdownload");
    else
        m_response.setContentType(s1);
    m_response.setContentLength((int)l);
    m_contentDisposition = m_contentDisposition != null ? m_contentDisposition : "attachment;";
    if(s2 == null)
        m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + toUtf8String(getFileName(s)));
    else
        if(s2.length() == 0)
            m_response.setHeader("Content-Disposition", m_contentDisposition);
        else
            m_response.setHeader("Content-Disposition", m_contentDisposition + " filename=" + toUtf8String(s2));
    while((long)k < l)
    {
        int j = fileinputstream.read(abyte0, 0, i);
        k += j;
        m_response.getOutputStream().write(abyte0, 0, j);
    }
    fileinputstream.close();
}
 

 

另外需要增加一個獲得漢字字符的UTF-8編碼的方法

 

復制代碼代碼如下:
/**
* 將文件名中的漢字轉為UTF8編碼的串,以便下載時能正確顯示另存的文件名.
* 雨亦奇2003.08.01
* @param s 原文件名
* @return 重新編碼后的文件名
*/
public static String toUtf8String(String s) {
    StringBuffer sb = new StringBuffer();
    for (int i=0;i<s.length();i++) {
        char c = s.charAt(i);
        if (c >= 0 && c <= 255) {
            sb.append(c);
        } else {
            byte[] b;
            try {
                b = Character.toString(c).getBytes("utf-8");
            } catch (Exception ex) {
                System.out.println(ex);
                b = new byte[0];
            }
            for (int j = 0; j < b.length; j++) {
                int k = b[j];
                if (k < 0) k += 256;
                sb.append("%" + Integer.toHexString(k).toUpperCase());
            }
        }
    }
    return sb.toString();
}

 

將這個增加到SmartUpload.java文件中,下載時的另存中文名亂碼問題便不會出現了,處理完了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。



注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品91久久久久久| 精品无人国产偷自产在线| 欧美激情欧美狂野欧美精品| 欧美亚洲视频一区二区| 国产精品1区2区在线观看| 亚洲色图15p| 日本aⅴ大伊香蕉精品视频| 欧美做受高潮1| 亚洲在线第一页| 色无极亚洲影院| 国产欧美一区二区三区四区| 日韩视频永久免费观看| 亚洲福利视频免费观看| 国产亚洲精品久久久久动| 国产综合久久久久| 国产成人精品电影| 亚洲精品日产aⅴ| 一区二区三区在线播放欧美| 亚洲老板91色精品久久| 日韩av手机在线看| 中文字幕视频一区二区在线有码| 日韩欧美在线视频观看| 国产性猛交xxxx免费看久久| 欧美电影免费观看大全| 欧美激情综合色| 欧美丝袜一区二区三区| 亚洲欧美一区二区三区情侣bbw| 国内精品模特av私拍在线观看| 91高清免费视频| 成人激情视频在线| 欧美另类在线播放| 成人激情免费在线| 日韩成人久久久| 精品无码久久久久久国产| 俺也去精品视频在线观看| 国产精品美腿一区在线看| 欧美性猛交xxxxx免费看| 午夜精品久久久久久久99热浪潮| 一色桃子一区二区| 91免费视频网站| 97在线免费观看视频| 亚洲天堂av高清| 国产91|九色| 亚洲精品成人久久电影| 视频在线观看99| 国产91精品黑色丝袜高跟鞋| 欧美日韩免费区域视频在线观看| 久久97久久97精品免视看| 亚洲在线免费观看| 日本亚洲精品在线观看| 91视频国产一区| 久久久久亚洲精品国产| 久久久爽爽爽美女图片| 久久偷看各类女兵18女厕嘘嘘| 欧美国产高跟鞋裸体秀xxxhd| 黑人精品xxx一区一二区| zzijzzij亚洲日本成熟少妇| 国产精品视频久久久久| 97激碰免费视频| 久久艳片www.17c.com| 久久久伊人欧美| 日韩av男人的天堂| 亚洲精品久久久久久久久久久| www.99久久热国产日韩欧美.com| 国产97在线视频| 久久夜色精品国产亚洲aⅴ| 欧美日韩在线第一页| 精品久久久久久中文字幕大豆网| 久久成年人免费电影| 国产国语videosex另类| 亚洲成人激情在线| 亚洲精美色品网站| 日韩激情av在线免费观看| 亚洲综合一区二区不卡| 国产精品九九九| 国产精品精品一区二区三区午夜版| 欧美大肥婆大肥bbbbb| 日韩在线高清视频| 97热在线精品视频在线观看| 国产精品视频99| 欧美亚洲一级片| 亚洲精品美女久久久| 亚洲国模精品私拍| 日韩av一区二区在线观看| 国内外成人免费激情在线视频网站| 97婷婷涩涩精品一区| 91久久久亚洲精品| 九九热99久久久国产盗摄| 午夜精品久久久久久99热| 亚洲欧美精品伊人久久| 亚洲国产另类 国产精品国产免费| 4388成人网| 日韩av影片在线观看| 亚洲国产欧美日韩精品| 精品福利一区二区| 一区二区三区精品99久久| 国产日韩精品一区二区| 国产亚洲激情视频在线| 国产精品激情自拍| www.久久撸.com| 欧美视频在线观看免费| 成人在线一区二区| 亚洲人成网站在线播| 国产丝袜一区二区三区免费视频| 久久久久在线观看| 国产精品久在线观看| 国产日韩亚洲欧美| 亚洲人成网站在线播| 久久国产精品偷| 欧美日韩精品在线观看| 一本色道久久综合狠狠躁篇的优点| 久久精品美女视频网站| 欧美性极品少妇精品网站| 国产精品自拍小视频| 精品日韩美女的视频高清| 夜夜嗨av一区二区三区免费区| 欧美电影免费观看高清| 欧美夫妻性生活xx| 欧美极品少妇xxxxx| 欧美黑人巨大xxx极品| 亚洲激情成人网| 大胆人体色综合| 精品中文字幕视频| 国产z一区二区三区| 欧美性猛交xxxx乱大交蜜桃| 欧美激情视频一区二区三区不卡| 成人av番号网| 日韩中文字幕在线观看| 国产午夜精品免费一区二区三区| 亚洲欧洲美洲在线综合| 国产精品视频免费观看www| 欧美激情在线有限公司| 欧美一级片在线播放| 久久躁日日躁aaaaxxxx| 欧美色播在线播放| 俺去亚洲欧洲欧美日韩| 中文字幕在线看视频国产欧美在线看完整| 国产精品私拍pans大尺度在线| 国产精品老女人精品视频| 亚洲高清福利视频| 欧美又大又粗又长| 亚洲综合精品一区二区| 992tv成人免费视频| 国产精品久久久久久久一区探花| 精品国产乱码久久久久酒店| 欧美一级免费看| 国产精品久久久久久久天堂| 91国内揄拍国内精品对白| 精品自在线视频| 91免费综合在线| 欧美极品少妇xxxxⅹ免费视频| 中文字幕v亚洲ⅴv天堂| 国产在线拍揄自揄视频不卡99| 亚州精品天堂中文字幕| 国产亚洲精品91在线| 久久久亚洲网站| 在线观看久久久久久| 亚洲男人的天堂在线| 欧美视频中文在线看| 亚洲色图狂野欧美| 国内精品久久久久| www.亚洲一二| 日韩一区二区三区xxxx| 亚洲人成网在线播放|