解決文件下載文件名亂碼和特殊符號的問題

爲了解決中文文件名亂碼的問題,通常都會通過URLEncoder轉碼的方式來解決,關鍵代碼如下

response.setContentType( "application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));

但這樣會出現的問題是,如果文件名有空格,下載下來文件名中的空格就會被+號替代,網上搜索大多數是URLEncoder.encode之後將+號替換成%20,這種做法指標不治本,如果文件名中有+號或%號等特殊符號,加號就會變成%20,%號就會變成%25輸出,所以有特殊字符都不行。URLEncoder.encode可以解決中文名亂碼問題,但無法解決文件名中包含特殊字符問題,所以正確的做法如下

response.setContentType( "application/x-msdownload");
fileName = new String(fileName.getBytes("gbk"), "iso8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);

親測有效

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章