ServletResponse下载文件乱码怎么办

发布时间:2021-11-24 15:34:19 作者:小新
来源:亿速云 阅读:173

这篇文章给大家分享的是有关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下载文件乱码怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

推荐阅读:
  1. 下载文件时,ie中文名乱码
  2. Servlet学习笔记(5)——ServletResponse

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

servletresponse

上一篇:grails的criteria如何实现复合查询并实现结果分页

下一篇:如何实现和not in子句

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》