日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

文件下载乱码问题分析与解决

發(fā)布時(shí)間:2024/4/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文件下载乱码问题分析与解决 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文件下載時(shí)的亂碼問題:1.關(guān)于下載時(shí)中文名稱資源查找不到原因:<a href='${pageContext.request.contextPath}/download?filename=天空.mp3'>天空.mp3</a>這是get請求。在服務(wù)器端:String filename = request.getParameter("filename");解決: new String(filename.getBytes("iso8859-1"),"utf-8"); 2.下載文件顯示時(shí)的中文亂碼問題response.setHeader("content-disposition", "attachment;filename="+filename);IE:要求filename必須是utf-8碼firefox:要求filename必須是base64編碼.問題:怎樣判斷瀏覽器?String agent=request.getHeader("user-agent");if (agent.contains("MSIE")) {// IE瀏覽器filename = URLEncoder.encode(filename, "utf-8");} else if (agent.contains("Firefox")) {// 火狐瀏覽器BASE64Encoder base64Encoder = new BASE64Encoder();filename = "=?utf-8?B?"+ base64Encoder.encode(filename.getBytes("utf-8"))+ "?=";}else {// 其它瀏覽器filename = URLEncoder.encode(filename, "utf-8");

處理IE瀏覽器與Firefox瀏覽器亂碼問題

if (agent.contains("MSIE")) {

??????????????????????????? // IE瀏覽器

??????????????????????????? filename = URLEncoder.encode(filename, "utf-8");

??????????????????????????? filename = filename.replace("+", " ");

???????????????????? } else if (agent.contains("Firefox")) {

??????????????????????????? // 火狐瀏覽器

??????????????????????????? BASE64Encoder base64Encoder = new BASE64Encoder();

??????????????????????????? filename = "=?utf-8?B?"

????????????????????????????????????????? + base64Encoder.encode(filename.getBytes("utf-8"))

????????????????????????????????????????? + "?=";

???????????????????? } else if (agent.contains("Chrome")) {

??????????????????????????? // google瀏覽器

??????????????????????????? filename = URLEncoder.encode(filename, "utf-8");

???????????????????? } else {

??????????????????????????? // 其它瀏覽器

??????????????????????????? filename = URLEncoder.encode(filename, "utf-8");

???????????????????? }

package cn.learn.web.servlet;import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URLEncoder;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import sun.misc.BASE64Encoder;public class DownloadServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 1.得到要下載 的文件名稱String filename = request.getParameter("filename");filename = new String(filename.getBytes("iso8859-1"), "utf-8");// 解決中文亂碼// 2.在d:/upload目錄下查找這個(gè)文件是否存在File file = new File("d:/upload/" + filename);if (file.exists()) {// /文件存在,完成下載// 下載注意事項(xiàng)1--設(shè)置下載文件的mimeTypeString mimeType = this.getServletContext().getMimeType(filename);response.setContentType(mimeType);String agent = request.getHeader("user-agent");if (agent.contains("MSIE")) {// IE瀏覽器filename = URLEncoder.encode(filename, "utf-8");} else if (agent.contains("Firefox")) {// 火狐瀏覽器BASE64Encoder base64Encoder = new BASE64Encoder();filename = "=?utf-8?B?"+ base64Encoder.encode(filename.getBytes("utf-8"))+ "?=";} else {// 其它瀏覽器filename = URLEncoder.encode(filename, "utf-8");}// 下載注意事項(xiàng)2--永遠(yuǎn)是下載response.setHeader("content-disposition", "attachment;filename="+ filename);FileInputStream fis = new FileInputStream(file); // 讀取要下載文件的內(nèi)容OutputStream os = response.getOutputStream(); // 將要下載的文件內(nèi)容通過輸出流寫回到瀏覽器端.int len = -1;byte[] b = new byte[1024 * 100];while ((len = fis.read(b)) != -1) {os.write(b, 0, len);os.flush();}os.close();fis.close();} else {throw new RuntimeException("下載資源不存在.");}}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

?

超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的文件下载乱码问题分析与解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。