詳解關(guān)于java文件下載文件名亂碼問(wèn)題解決方案
JAVA文件下載時(shí)亂碼有兩種情況:
1,下載時(shí)中文文件名亂碼
2,下載時(shí)因?yàn)槁窂街邪形奈募麃y碼,提示找不到文件
解決方法見(jiàn)下面部分代碼
response.setContentType("multipart/form-data"); String userAgent = request.getHeader("User-Agent"); String oraFileName = meetingFile.getFileName(); String formFileName=oraFileName; // 針對(duì)IE或者以IE為內(nèi)核的瀏覽器: if (userAgent.contains("MSIE") || userAgent.contains("Trident")) { formFileName = java.net.URLEncoder.encode(formFileName, "UTF-8"); } else { // 非IE瀏覽器的處理: formFileName = new String(formFileName.getBytes("UTF-8"), "ISO-8859-1"); } response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", formFileName)); response.setContentType("application/vnd.ms-excel;charset=utf-8"); response.setCharacterEncoding("UTF-8"); ServletOutputStream out; // 通過(guò)文件路徑獲得File對(duì)象 File file = null; if (meetingFile != null) { file = new File(path + "upload/"+oraFileName); }
(1)如果第一種亂碼類型,下載頁(yè)面遇到以下的中文亂碼問(wèn)題
用以下代碼解決
(2)如果下載遇到第二種亂碼問(wèn)題,如圖:
用以下代碼解決:即首先確保tomcat ,eclipse等為utf-8編碼
然后JAVA中這樣與第一種對(duì)文件名編碼分開(kāi),使它們分別編碼,互不影響。
注意:以前目前測(cè)試可解決火狐與IE等瀏覽器下載時(shí)的編碼問(wèn)題,而針對(duì)WIN10自帶的瀏覽器不時(shí)仍會(huì)出現(xiàn)亂碼現(xiàn)象,誰(shuí)要是有好的能兼容所有瀏覽器的方法希望能與本人分享,感激不盡。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Cloud中使用Eureka的詳細(xì)過(guò)程
Eureka 是 Netflix 開(kāi)源的一個(gè)服務(wù)發(fā)現(xiàn)組件,它在微服務(wù)架構(gòu)中扮演著重要的角色,這篇文章主要介紹了Spring Cloud中如何使用Eureka,需要的朋友可以參考下2024-07-07Springboot基礎(chǔ)學(xué)習(xí)之初識(shí)SpringBoot
今天帶大家學(xué)習(xí)Springboot基礎(chǔ)知識(shí),文中有非常詳細(xì)的圖文解說(shuō)及代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05Java實(shí)現(xiàn)將Word轉(zhuǎn)換成Html的示例代碼
在業(yè)務(wù)中,常常會(huì)需要在瀏覽器中預(yù)覽Word文檔,或者需要將Word文檔轉(zhuǎn)成HTML文件保存,本文主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)Word轉(zhuǎn)換成Html的相關(guān)方法,希望對(duì)大家有所幫助2024-02-02SpringBoot中SmartLifecycle的使用解析
這篇文章主要介紹了SpringBoot中SmartLifecycle的使用解析,SmartLifecycle是一個(gè)擴(kuò)展了Lifecycle接口,可以跟蹤spring容器ApplicationContext刷新或者關(guān)閉的接口,實(shí)現(xiàn)該接口的實(shí)現(xiàn)類有特定的執(zhí)行順序,需要的朋友可以參考下2023-11-11Admin - SpringBoot + Maven 多啟動(dòng)環(huán)境配置實(shí)例詳解
這篇文章主要介紹了Admin - SpringBoot + Maven 多啟動(dòng)環(huán)境配置,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03詳解Java編寫(xiě)算法時(shí)如何加快讀寫(xiě)數(shù)據(jù)速度
這篇文章主要為大家詳細(xì)介紹了Java在編寫(xiě)算法時(shí)如何加快讀寫(xiě)數(shù)據(jù)速度,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03