使用ServletUtil.write方法下載接口文件中文亂碼問題解決
前言
在開發(fā)過程中遇到的一個小問題,實現(xiàn)一個下載模板的接口,我選擇了使用hutool包的ServletUtil.write方法去進行文件下載,但調試過程中下載出來的文件名是亂碼的,那么是為什么呢?
代碼片段如下:

一、問題分析
我們先來看看ServletUtil.write方法的源碼

我們發(fā)現(xiàn)他會去調用getMimeType方法去分析MIME 類型,如果獲取不到就會設置默認的響應MIME類型,也就是application/octet-stream

我們發(fā)現(xiàn)他是通過拿文件的后綴名從而返回相應的MIME類型到這里我們發(fā)現(xiàn)還是很正常的,最起碼響應的MIME類型是沒問題的我們接著往下看,getInputStream沒什么好看的,就是獲取輸入流那么重點就是看write方法了

一般出現(xiàn)文件名中文亂碼我們都會想到響應設置字符編碼沒設置為UTF-8,那么很明顯的看到,他設置的響應字符編碼是通過我們響應設置的編碼來使用的,也就是response.getCharacterEncoding(),如果他獲取為null,那么他就設置默認值為UTF-8,而傳輸過程他也給我們使用了URLUtil.encodeAll給我們進行編碼了,很明顯這里不會有問題,那這時經過debuger就發(fā)現(xiàn)了,原來是因為response.getCharacterEncoding()獲取到的編碼為iso-8859-1編碼,所以下載出來的文件名亂碼了,那么解決的辦法也很簡單,只需要手動設置一下編碼就好了
二、解決辦法

總結
本文簡單講述了使用ServletUtil.write方法下載接口文件中文亂碼問題的原因以及如何解決,通過查看ServletUtil.write方法的源碼進一步了解底層思路。更多相關ServletUtil.write下載亂碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringSecurity授權機制的實現(xiàn)(AccessDecisionManager與投票決策)
本文主要介紹了SpringSecurity授權機制的實現(xiàn),其核心是AccessDecisionManager和投票系統(tǒng),下面就來介紹一下,感興趣的可以了解一下2025-04-04
Spring反射內置工具類ReflectionUtils用法及說明
這段文章主要介紹了Java反射機制及其在獲取sentinel熔斷規(guī)則map和操作類屬性方法中的應用,通過JDK和Spring的ReflectionUtils展示了如何優(yōu)雅地處理反射操作,提升代碼的可閱讀性和維護性2026-06-06
SpringBoot整合EasyExcel?3.x的完整示例
EasyExcel 是一個基于 Java 的、快速、簡潔、解決大文件內存溢出的 Excel 處理工具,它能讓你在不用考慮性能、內存的等因素的情況下,快速完成 Excel 的讀、寫等功能,這篇文章主要介紹了SpringBoot整合EasyExcel3.x的過程,需要的朋友可以參考下2023-07-07
java判斷l(xiāng)ist不為空的實現(xiàn),和限制條數(shù)不要在一起寫
這篇文章主要介紹了java判斷l(xiāng)ist不為空的實現(xiàn),和限制條數(shù)不要在一起寫。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01

