兼容各浏览器的文件下载时中文名称乱码的解决方案

public class DownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// codes..
String name = "中文名 带空格 的测试文件.txt";
String userAgent = request.getHeader("User-Agent");
byte[] bytes = userAgent.contains("MSIE") ? name.getBytes() : name.getBytes("UTF-8"); // name.getBytes("UTF-8")处理safari的乱码问题
name = new String(bytes, "ISO-8859-1"); // 各浏览器基本都支持ISO编码
response.setHeader("Content-disposition", String.format("attachment; filename=\"%s\"", name)); // 文件名外的双引号处理firefox的空格截断问题
// codes..
}
}

这段代码处理了文件下载时不同浏览器解析中文文件名所出现的乱码问题和firefox的空格截断问题,在IE9, chrome, opera, safari, firefox下均测试通过。

来源:https://f0rb.iteye.com/blog/1308579

    但是没有解决我的ie9下载时的乱码问题,做了一步修改:

response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("GBK"),"ISO8859-1"));

  修改为gbk后问题解决。

原文地址:https://www.cnblogs.com/wtcadmin/p/10694352.html

时间: 2024-10-12 15:06:15

兼容各浏览器的文件下载时中文名称乱码的解决方案的相关文章

Java web中不同浏览器间导出Excel文件名称乱码问题解决方案

问题描述: 对于不同浏览器存在对中文编码格式问题,从而在导出Excel文件时,中文文件名出现乱码的情况,即在程序中给要导出的文件指定一个中文名字时,在浏览器上出现的下载框中的文件名出现了乱码,解决如下: 解决方案: [java] view plain copy Date dt=new Date();//如果不需要格式,可直接用dt,dt就是当前系统时间 DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//设置显示格

asp.net 文件下载显示中文名称

protected void Page_Load(object sender, EventArgs e)    {        string guid = Request.QueryString["GUID"];        string sql = "select XSMC,FJMC,LJ from T_AQGL_FJ where GUID='" + guid + "'";        CX.DBGetResult dbgr = new

通过freemarker出word的技术解决方案_通过点击一个按钮临时实现生成一个word,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表

 通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名改成ftl文件 详细步骤如下: 模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${(site.wzmc)?default("")}标识当网站名称为空的时候显示空值,如果这里如果不做控制,在实际项目中会显示错误!) 另外

get提交时中文传值乱码的有关问题

get提交时中文传值乱码的问题 get提交时中文传值乱码的问题 url=curWarnList.action paramBean.bsIndex=1&paramBean.siteName=萧山A基站,href连接提交其实是get提交方式,会造成中文乱码.这个主要是编码方式不统一.JSP(手动设置).Java(字符串是unicode编码).操作系统..数据库().Tomcat等等,各种不同环境介质都有不同的编码方式,如果编码方式不统一,就会造成乱码. url参数中文是以ISO8859-1的编码方式

在FireFox/IE下Response中文文件名乱码问题解决方案

在FireFox/IE下Response中文文件名乱码问题解决方案 作者: 字体:[增加 减小] 类型:转载 只是针对没有空格和IE的情况下使用Response.AppendHeader()如果想在FireFox下输出没有编码的文件,并且IE下输出的文件名中空格不为+号,就要多一次判断了,接下来将详细介绍下感兴趣的朋友可以了解下,或许对你有所帮助 发现很多园子里的人在处理Response下载文件名是使用这个方法 Response.AppendHeader("Content-Disposition

Ubuntu 16.04 中文菱形乱码的解决方案

Ubuntu 16.04 中文菱形乱码的解决方案: 请用root权限进入修改 执行命令: cp -a /var/lib/locales/supported.d/local /tmp vim /var/lib/locales/supported.d/local 将里面的原有内容删除,添加为: en_US.UTF-8 UTF-8 执行命令: cp -a /etc/default/locale /tmp vim /etc/default/locale 修改为: LANG="en_US.UTF-8&qu

[pdf.js]预览pdf时,中文名称乱码的问题

在项目中使用了pdf.js的方式预览pdf,但针对中文名称的时候会出现乱码,导致找不到该文件而出现错误. 解决办法 <script src="viewer.js" charset="gb2312"></script> 结果

安装redhat时中文显示乱码(小方框)解决方法

在安装linux的时候,安装完了中文出现乱码或者是当时选错了选成了英文的,到时候中文显示乱码,下面说一下问题的解决: 在首次安装RHEL5时,如果选择的是英文,那么系统将不安装中文支持包,这样就导致了中文显示为乱码(小方框)....... 有很多人说vi /etc/sysconfig/i18n文件,其实根本就没有那个必要. 解决方法: 安装 1.fonts-chinese-3.02-9.6.el5.noarch.rpm.  如果无法安装,则加个--force 2.fonts-ISO8859-2-

CKFinder图片中文名称乱码问题

问题: 出现乱码的问题主要是因为前后台编码不一致造成. 解决方法: CKFinder默认编码方式为"UTF-8",所以要求程序默认编码为"utf-8",如果不是,需要将上传图片时的名称手动进行编码. 一般情况下,项目的编码都应该是"UTF-8",以java项目为例,tomcat的配置文件server.xml中应设置编码方式,例如: <Connector port="80" protocol="HTTP/1.1&