最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java下載文件中文文件名亂碼的解決方案(文件名包含很多%)

 更新時間:2025年02月13日 16:57:19   作者:買火車的小男孩  
Java下載文件時,文件名中文亂碼問題通常是由于編碼不正確導致的,使用`URLEncoder.encode(filepath, "UTF-8")`可以解決在提示下載框中正確顯示漢字文件名的問題,但在選擇直接打開時,文件名會變成亂碼,解決這個問題的方法

Java下載文件中文文件名亂碼問題

一般情況下,大家都是這樣

fileName = URLEncoder.encode(fileName, "UTF-8");
response.reset();
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
response.setContentType("application/octet-stream; charset=UTF-8");
IoUtil.copy(inputStream, response.getOutputStream());

其實亂碼就是亂在;filename=" + fileName這里,對文件名的編碼設定上。

使用URLEncoder.encode(filepath,"UTF-8")雖然可以解決在提示下載框中正確顯示漢字文件名的問題,并且在選擇保存,然后打開的情況下,文件名稱也可以正確的顯示。

但是在提示下載框中,選擇直接打開,則文件名稱變成了類似這樣的樣子。

“%E7%BB%99%E7%94%A8%E6%88%B7%E6%8F%90%E4%BE%9B%E7%9A%84%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6%E5%90%8D”

為了解決這個問題

百度了好久,是這樣的

String downloadfile = new String(filepath.getBytes("gb2312"),"iso8859-1");
response.addHeader("Content-Disposition","attachment;filename=" + downloadfile );

還有這樣

String userAgent = request.getHeader("User-Agent");
String formFileName = "員工表.xls";

// 針對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("multipart/form-data");
response.setCharacterEncoding("UTF-8");

發(fā)現(xiàn)都不能解決問題,不懈努力,崩潰邊緣

最終解決

fileName = URLEncoder.encode(fileName, "UTF-8");
response.reset();
// fileName后面設置編碼格式是重點
response.setHeader("Content-disposition", "attachment;filename="+fileName+";"+"filename*=utf-8''"+fileName);
response.setContentType("application/octet-stream; charset=UTF-8");
IoUtil.copy(inputStream, response.getOutputStream());

完美解決!??!

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • jstorm源碼解析之bolt異常處理方法

    jstorm源碼解析之bolt異常處理方法

    下面小編就為大家?guī)硪黄猨storm源碼解析之bolt異常處理方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 使用Maven進行依賴排除的詳細步驟

    使用Maven進行依賴排除的詳細步驟

    在Maven中,依賴排除是一種常見的技術,用于從項目的依賴中排除特定的傳遞性依賴,這通常用于解決依賴沖突或避免引入不需要的庫,以下是如何在Maven中使用依賴排除的詳細步驟,包括代碼示例,需要的朋友可以參考下
    2024-11-11
  • 堆排序算法的講解及Java版實現(xiàn)

    堆排序算法的講解及Java版實現(xiàn)

    這篇文章主要介紹了堆排序算法的講解及Java版實現(xiàn),堆排序基于堆這種數(shù)據(jù)結構,在本文中對堆的概念也有補充介紹,需要的朋友可以參考下
    2016-05-05
  • Java?Spring聲明式事務失效情況解決辦法(天翼通訊)

    Java?Spring聲明式事務失效情況解決辦法(天翼通訊)

    在Spring的聲明式事務中,多線程環(huán)境下事務會失效,因為子線程無法繼承父線程的事務上下文,這篇文章主要介紹了Java?Spring聲明式事務失效情況解決辦法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-10-10
  • Java中的多態(tài)、抽象類和接口詳解

    Java中的多態(tài)、抽象類和接口詳解

    這篇文章詳細講解了Java的多態(tài)、抽象類和接口,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Java23種設計模式中的單例模式你了解嗎

    Java23種設計模式中的單例模式你了解嗎

    這篇文章主要為大家詳細介紹了Java23種設計模式中的單例模式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • SPRING IOC注入方式過程解析

    SPRING IOC注入方式過程解析

    這篇文章主要介紹了SPRING IOC注入方式過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot+Querydsl?框架實現(xiàn)復雜查詢解析

    SpringBoot+Querydsl?框架實現(xiàn)復雜查詢解析

    本篇主要將介紹的是利用spring query dsl框架實現(xiàn)的服務端查詢解析和實現(xiàn)介紹,對SpringBoot?Querydsl?查詢操作感興趣的朋友一起看看吧
    2022-05-05
  • 基于Java向zip壓縮包追加文件

    基于Java向zip壓縮包追加文件

    這篇文章主要介紹了基于Java向zip壓縮包追加文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • RocketMQ生產(chǎn)者如何規(guī)避故障Broker方式詳解

    RocketMQ生產(chǎn)者如何規(guī)避故障Broker方式詳解

    這篇文章主要為大家介紹了RocketMQ生產(chǎn)者如何規(guī)避故障Broker方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

五峰| 泰和县| 石林| 越西县| 大足县| 晋宁县| 镇康县| 砚山县| 汕尾市| 磐安县| 屯留县| 平安县| 炉霍县| 潮安县| 永修县| 北宁市| 牙克石市| 巩义市| 遂川县| 广河县| 洞口县| 郯城县| 安国市| 彭泽县| 浦北县| 高青县| 高台县| 义乌市| 礼泉县| 临汾市| 象山县| 资兴市| 西和县| 凌源市| 青阳县| 颍上县| 义马市| 广东省| 平度市| 如东县| 称多县|