您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關ServletResponse下載文件亂碼怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
通常來說解決亂碼兩個方式:
1、把文件名(包括漢字)編碼成UTF-8
String downloadOrigalFile = "測試文件亂碼.xlsx";
String downloadFileName = java.net.URLEncoder.encode(downloadOrigalFile, "UTF-8");
response.setHeader("Content-Disposition", "p_w_upload; filename=" + downloadFileName);
如果文件名中出現空格,需要把空格替換為%20,UTF-8下+表示空格
downloadFileName = downloadFileName.replace("+", "%20");
2、把文件名編碼成ISO-8859-1(因為默認編碼是ISO-8859-1)
String downloadOrigalFile = "測試文件亂碼.xlsx";
final String LOCALE_ENCODING = "gb2312";
// 此處的LOCALE_ENCODING=gb2312:通常可以使用java的System.getProperties()遍歷察看獲得,
// 一般有兩個值可能和此有關,請參考結合實際情況使用。
// sun.jnu.encoding=GBK
// file.encoding=UTF-8
final String DEFAULT_ENCODING = "ISO-8859-1";
String downloadFileName = new String(downloadOrigalFile.getBytes(LOCALE_ENCODING), DEFAULT_ENCODING);
如果文件名中出現空格,需要把空格替換為%20
downloadFileName = downloadFileName.replace(" ", "%20");
// 此處的getBytes()如果不指定編碼,在跨平臺的時候可能會出現問題,建議明確指定編碼。
response.setHeader("Content-Disposition", "p_w_upload; filename=" + downloadFileName);
====
3、如果要在瀏覽器地址中顯示中文,一般需要修改web容器的默認編碼URIEncoding="UTF-8"
(即用get的方式直接下載文件)
例如tomcat容器,在TOMCAT_HOME/conf/server.xml中的如下位置加入
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"
connectionTimeout="20000"
redirectPort="8443" />
4、URL中常用的特殊編碼
+ URL 中+號表示空格 %2B
空格 URL中的空格可以用+號或者編碼 %20
/ 分隔目錄和子目錄 %2F
? 分隔實際的URL和參數 %3F
% 指定特殊字符 %25
# 表示書簽 %23
& URL 中指定的參數間的分隔符 %26
= URL 中指定參數的值 %3D
感謝各位的閱讀!關于“ServletResponse下載文件亂碼怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。