Springboot下載excel文件中文名亂碼問題及解決
Springboot下載excel文件中文名亂碼
通常在下載文件時會通過HttpServletResponse對象設置一些屬性以及文件名
核心代碼
如下:
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(FILE_NAME, "UTF-8") + "");
response.setHeader("Content-Disposition", "attachment;filename=" + FILE_NAME+"");
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setCharacterEncoding("utf-8");紅色部分是最終正確的姿勢,最開始我是用紫色部分的代碼實現的,但是在用postman調用接口的時候發(fā)現下載下來的文件名如果有中文就會出現亂碼
查了一通資料,改用紅色部分實現,但是用postman下載下來過后發(fā)現文件名稱是經過編碼的。
類似這樣:
%E9%A2%84%E7%AE%97%E5%AF%BC%E5%85%A5.xlsx
于是我試了很多次還是這樣,最后偶然發(fā)現在瀏覽器里面調用接口下載下來的文件名是正常的,不知道postman為啥始終不行
Springboot文件下載的時候文件名出現問題
1.一開始文件名全是下橫線__
經查詢之后,添加了這行代碼
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(homeworkname, "utf-8"))2.下橫線的問題解決了
但出現中文亂碼,出現%%字符
再次查找之類,將上述的代碼改成以下,解決亂碼
response.setHeader("Content-Disposition", "attachment;filename="+ homeworkname +";filename*=utf-8''"+URLEncoder.encode(homeworkname,"UTF-8"));除此之外,發(fā)現也可以用這種方法
response.setHeader("Content-Disposition",
"attachment;filename=" + new String(homeworkname.getBytes("utf-8"), "ISO8859-1"));總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot+Vue+Flowable模擬實現請假審批流程
這篇文章主要為大家詳細介紹了如何利用SpringBoot+Vue+Flowable模擬實現一個請假審批流程,文中的示例代碼講解詳細,需要的可以參考一下2022-08-08
SpringBoot AOP導致service注入后是null的問題
本文主要講述了如何利用SpringAOP實現用戶操作日志的記錄,首先,引入SpringBoot的AOP依賴,然后,選擇基于注解的形式來實現日志操作,以避免污染原有代碼和邏輯,在理解了SpringBootAOP的一些注解后,需要記錄用戶的正常請求以及異常請求的信息2024-10-10

