这篇文章给大家分享的是有关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中的如下位置加入
connectionTimeout="20000" redirectPort="8443" /> 4、URL中常用的特殊编码 + URL 中+号表示空格 %2B 空格 URL中的空格可以用+号或者编码 %20 / 分隔目录和子目录 %2F ? 分隔实际的URL和参数 %3F % 指定特殊字符 %25 # 表示书签 %23 & URL 中指定的参数间的分隔符 %26 = URL 中指定参数的值 %3D 感谢各位的阅读!关于“ServletResponse下载文件乱码怎么办”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧! 创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
本文标题:ServletResponse下载文件乱码怎么办-创新互联
文章起源:http://cxhlcq.com/article/dephjs.html