解决不同浏览器上中文文件名的下载乱码问题

目前,我们的U盘和Mail中对含有中文文件名的下载处理都不是太好

 

在某些浏览器下,下载显示的文件名是乱码

 

我又顺便看了一下其他各邮箱和网盘的处理,只有QQ处理的比较好

 

现在时基本上每个浏览器都能正常显示中文的文件名

 

花了一些时间对IE,Firefox,Opera,Chrome,Safari这几个浏览器进行了测试

 

总结了一下,各浏览器能正确识别的编码格式,只要按照这样的编码来设置对应的Content-Disposition

 

那么应该就不会出现中文文件名的乱码问题了

 

 

 

首先,Content-Disposition值可以有以下几种编码格式

 

1. 直接urlencode:

 

    Content-Disposition: attachment; filename="struts2.0%E4%B8%AD%E6%96%87%E6%95%99%E7%A8%8B.chm"

 

2. Base64编码:

 

    Content-Disposition: attachment; filename="=?UTF8?B?c3RydXRzMi4w5Lit5paH5pWZ56iLLmNobQ==?="

 

3. RFC2231 规定的标准:

 

    Content-Disposition: attachment; filename*=UTF-8''%E5%9B%9E%E6%89%A7.msg

 

4. 直接ISO编码的文件名:

 

    Content-Disposition: attachment;filename="测试.txt"

 

然后,各浏览器支持的对应编码格式为:

 

1.  IE浏览器,采用URLEncoder编码

 

2.  Opera浏览器,采用filename*方式

 

3.  Safari浏览器,采用ISO编码的中文输出

 

4.  Chrome浏览器,采用Base64编码或ISO编码的中文输出

 

5.  FireFox浏览器,采用Base64或filename*或ISO编码的中文输出

 

 

 

对应的Java代码如下:

 

折叠 复制代码

 

  1. new_filename = URLEncoder.encode(filename,  "UTF8" );  

 

// 如果没有UA,则默认使用IE的方式进行编码,因为毕竟IE还是占多数的   

 

rtn = "filename=""  + new_filename +  """ ;  

 

if  (userAgent !=  null )  

 

{  

 

    userAgent = userAgent.toLowerCase();  

 

    // IE浏览器,只能采用URLEncoder编码   

 

    if  (userAgent.indexOf( "msie" ) != - 1 )  

 

    {  

 

        rtn = "filename=""  + new_filename +  """ ;  

 

    }  

 

    // Opera浏览器只能采用filename*   

 

    else   if  (userAgent.indexOf( "opera" ) != - 1 )  

 

    {  

 

        rtn = "filename*=UTF-8''"  + new_filename;  

 

    }  

 

    // Safari浏览器,只能采用ISO编码的中文输出   

 

    else   if  (userAgent.indexOf( "safari" ) != - 1  )  

 

    {  

 

        rtn = "filename=""  +  new  String(filename.getBytes( "UTF-8" ), "ISO8859-1" ) +  """ ;  

 

    }  

 

    // Chrome浏览器,只能采用MimeUtility编码或ISO编码的中文输出   

 

    else   if  (userAgent.indexOf( "applewebkit" ) != - 1  )  

 

    {  

 

        new_filename = MimeUtility.encodeText(filename, "UTF8" ,  "B" );  

 

        rtn = "filename=""  + new_filename +  """ ;  

 

    }  

 

    // FireFox浏览器,可以使用MimeUtility或filename*或ISO编码的中文输出   

 

    else   if  (u
serAgent.indexOf( "mozilla" ) != - 1 )  

 

    {  

 

        rtn = "filename*=UTF-8''"  + new_filename;  

 

    }  

 

}  

 

 

目前,我测试的情况,在几个浏览器上都能正常输入中文文件名

 

但,也许浏览器不同版本,可能还会有乱码的情况…..
电压比较器---滞回比较器(施密特触发器) 当输入电压从小电压开始增加,当其大于VT+时,电压比较器输出低电平,此时阈值电压变成下门限电压(VT-);当输入电压从大电压开始减小,当其小于VT-时,电压比较器输出高电平,此时阈值电压变成上门限电压(VT+);只有当第一次超过上门限电压或者下门限电压值,电压比较器的输出才会翻转变化;Uo为比较输出电压,有两种电压状态VoH(高电平)和VoL(低电平);当Uo输出为高时,电压比较器的阈值电压是上门限电压(VT+);当Uo输出为低时,电压比较器的阈值电压是下门限电压(VT-);Vref为比较参考电压; 阅读详情

相关推荐

OLLAMA_HOST环境变量设置全攻略:从127.0.0.1到局域网共享的完整配置

本文详细解析了OLLAMA_HOST环境变量的核心作用与配置方法,指导用户如何将Ollama服务从仅限本机访问(127.0.0.1)扩展到局域网共享。文章涵盖了macOS、Linux、Windows三大平台的实战配置步骤,并提供了安全加固、性能优化及常见故障排查方案,是解决多设备协作访问本地AI模型的完整指南。

weixin_28455801的博客 1908

各浏览器下载文件名不乱码的解决办法

转自:https://segmentfault.com/a/1190000005994758/

ezreal_pan的博客 1535

CST新手必看:共面波导色散曲线绘制全流程(附参数设置详解)

本文为CST新手提供了绘制共面波导色散曲线的完整流程与参数设置详解。从模型搭建、周期性边界条件设置,到本征模求解器配置和参数扫描技巧,逐步解析关键步骤,并分享后处理与结果验证方法,帮助用户高效完成仿真任务。

j0k1l2m3n的博客 425

HTTP协议header中Content-Disposition中文文件名乱码

在做文件下载时,当文件名为中文时,经常会出现乱码现象。 参考文章: http://blog.robotshell.org/2012/deal-with-http-header-encoding-for-file-download/ 本文就详细给出案例来解决这一乱码问题,以及还一直未解决的一个疑问,欢迎大家一起来探讨。 大体的原因就是header中只支持ASCII,所以我们传输的文件名必须是ASCI...

thlzjfefe的博客 1万+

工程伦理ppt

工程伦理学 第一章 工程与伦理 1.1 如何理解工程 一、技术与工程的区别 二、技术与工程的联系 三、工程的定义 五、工程具有不确定性和探索性 六、理解工程活动的7个维度 1.2 如何理解伦理 一、道德与伦理 二、不同的伦理立场 三、伦理困境与伦理选择 1.3 工程实践中的伦理问题 一、工程活动中的行动者网络(具有动态性和网络性) 二、主要的工程伦理问题 三、工程伦理问题的特点 1.4 如何处理工程实践中的伦理问题 一、工程实践中伦理问题的辨识 二、处理工程伦理问题的基本原则 三、应对工程伦理问题的基本思路

weixin_51656605的博客 7万+

红队内网攻防渗透:内网渗透之内网对抗:实战项目&VPC1打靶&PHP-RCE&三层代理路由&防火墙上线&密码喷射&域控提权

上面已经抓取到了密码,但是我们通过拓扑分析看,要想上线win10只能通过正向shell,因为win7的防火墙是开的,win10反向主动连接肯定入站规则拦截,而win10自己没有开防火墙,所以win7主动正向连接就可以上线。win7开启了防火墙,入站规则肯定是会拦截我们的请求的,所以我们需要反向上线,让win7主动来连接我们。这里扫描发现是存在ms17010漏洞的,但是想上线192.168.2.142的话,我们没有路由是上线不了的,这里有两种办法:一种msf直接生成后门,另一种cs移植后门到msf。

HACKONE的博客 910

解决在谷歌浏览器下载时文件名包含逗号导致页面显示网页不可用问题

该问题是谷歌浏览器的一个bug,因此我们设置响应头时,对于filename加上引号处理 设置响应头Content-Disposition中实际效果如:content-disposition=attachment;fileName="原文件名称"

后端开发 1782

30天入门 SAP BTP 开发系列之十八:保姆级教程 - 如何部署 SAP UI5 到 SAP BTP Cloud Foundry 环境

本文摘要: 本文详细介绍了如何将SAP UI5应用部署到Cloud Foundry环境。首先需完成前17篇教程学习,创建SAP BTP子账户并启用Cloud Foundry环境。在SAP Business Application Studio中创建Fiori开发空间,导入GitHub上的UI5项目代码。通过npm run build命令打包成mtar文件后,使用cf deploy命令部署到Cloud Foundry。部署成功后,可在BTP控制台查看应用或通过命令行获取访问URL。整个过程涵盖了环境准备、代码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1020

点击文字,下载图片或者文件

在一个前后端分离的项目上,有一个需求,点击文字,下载相应的图片或是文件。折腾了两天,还是在后台处理好图片或是文件,返回给前台来的实际。 效果图: 而且鼠标放上去是小手的样式。 html: <div v-if="item.controlType === 5" style="display:inline-block;width: 300px"> <i v-if=...

goodStudy_H的博客 666

黑猫带你学eMMC协议第9篇:eMMC初始化过程(initial)

本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 文章所在专栏:《黑猫带你学:eMMC协议详解》 1 什么是emmc的初始化 对于小白来说,可能不太明白什么是emmc初始化。举个栗子:当你拿到一个电脑,接上电源,是不是就立马可以用了呢?并不是吧,你还需要去开机,等待电脑启动,配置完各种参数,等出现了电脑桌面,你才能用。那么同样,对于emmc芯片来说,也不是提供电源就能用了,需要输入各种命令后,让其进入到tran state后,才能正.

黑猫奥利奥的博客 6742

硬件描述语言Verilog学习(一)

主要学习综合和仿真、模块结构和信号类型Verilog 是用代码的形式描述硬件的功能,最终在硬件电路上实现该功能。在 Verilog 描述出硬件功能后需要使用综合器对 Verilog 代码进行解释并将代码转化成实际的电路来表示,最终产生实际的电路,也被称为网表。这种将 Verilog 代码转成网表的工具就是综合器。 上图左上角是一段 Verilog 代码,该代码实现了一个加法器的功能。在经过综合器解释后该代码被转化成一个加法器电路。QUARTUS、ISE 和 VIVADO 等 FPGA 开发工具都是综合器,

安静到无声 1500

解决浏览器下载附件乱码问题 IE11

/** * @Title:encodeChineseDownloadFileName * @Description TODO(解决浏览器下载附件乱码问题). * @date 2016年8月19日 * @author lzqiangPC * @param pFileName * @return * @throws Exception

liuqiang211的专栏 3168

【2025年美团春招(算法岗)-3月15日-第三题(300分)- 字符串权值】(题目+思路+Java&C++&Python解析+在线测试)

小美定义一个字符串的权值为:其长度为3的回文子序列数量。例如,“abca"的权值为2,因为包含两个回文子序列"aba"和"aca现在给定一个仅包含小写字母的字符串,小美希望你输出该字符串每个前缀的权值。

m0_73659489的博客 312

解决不同浏览器上中文文件名的下载乱码问题php验证可行的测试过ie ff 和chrome的

<br />$broswerType = $this->getUserAgentBrowserType (); //获取浏览器类型 $sName = $this->getAttachmentHead ( $sName, $broswerType ); //解决乱码问题 header ( "Content-Type: application/vnd.ms-excel; charset=" . $sEncoding ); header ( "Content-Disposition: inlin

梦想摆渡的专栏 2268

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文件下载时文件名乱码问题

文件下载时,对于不同的浏览器可能会存在文件名乱码的问题,以下是我之前看到的一篇文章的解决方法,但是忘记文章的出处了,实在抱歉! protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String f

Sand_Ant的专栏 1569

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

不同浏览器下载文件时中文文件名乱码问题(最新)

不同浏览器下载文件时中文文件名乱码问题(最新)

shuai的博客 6469

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jsp实现文件下载与中文文件名乱码问题解决

之前,写过一个Download.jsp文件,可以解决下载文件乱码问题(诸如:DOC,XSL文件等等). 后来发现,遇到中文名的文件的时候,文件下载将会报错~~~~ 今天,通过改写原Download.jsp文件已经彻底解决了这个问题~ 现在,把一整套的文件上传下载的方法给贴出来~~~以便大家借鉴!~!~!~!~!   作者:古埃及法老 download.jsp文件 -----------

北极星 1544

Java下载文件名称中文乱码问题

问题: java中用poi API进行Excel文件的下载,下载操作可以执行,可是最后发现下载的文件名称若为中文,则会出现乱码。 解决办法: 原因:ie浏览器下自动转码格式为gbk,而火狐、chrome等浏览器下的自动转码格式为utf-8 因而,在生成下载文件名时,只需根据不同的浏览器,对文件名进行转码即可。 /** * 下载文件输出流 文件头设置 * @param respo...

weixin_43525290的博客 2112

JSP、Struts2下载中文文件名乱码问题

方案一: 原来处理下载的代码如下: response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8")); 下载的程序里有了这句,一般在IE6的下载提示框上将正确显示文件的名字,无论是简体中文,还是日文。 一. 上面方式,也

IOT之无线网络传输技术 5238

不同浏览器上中文文件名的下载/导出乱码问题(Java)

最近在做项目,采用Spring Boot,下载文件/导出excel的中文文件名总是在主流浏览器上显示乱码。然后就去网上搜索相关解决办法,拿网上办法进行测试发现那些方法都已经不适用现在主流浏览器最新的版本了,于是经过自己琢磨、探索、尝试,最终得到了一个简洁、可实现的解决办法。现分享出来给大家,希望对你们有所帮助,如果对你有用,也希望你多多给予支持,在此先谢谢了。

3515

解决文件名是中文时的下载乱码问题

在文件下载时候通常文件名是中文时会出现乱码问题,有两种解决方案 第一种 (在页面对代码进行编码) 不推荐使用 jsp代码 &lt;%@page import="java.net.URLEncoder"%&gt; &lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%...

计算机专业定做 2万+

文件下载(解决中文文件名下载乱码问题) 收集

 在前面一篇文章里(浅谈 COMMON-FILEUPLOAD1.1 的使用 )我介绍了用JSP上传文件的方法,提到上传与之对应的便是下载,可能很多网友会说下载直接做个超连接不就可以了,当然对于一般的文件(不怎么重要的,或者是用来共享的)就足够用了,但是涉及到一些安全问题,或者是一些图片,txt,word这类的文件下载时就会碰到问题了,最常见的问题就是当你点击图片的链接时,图片是直接打开而不是提示保

李蓝箫 2万+

java 下载文件的文件名乱码_java下载文件名乱码解决方法介绍

java Web开发下载文件功能(代码如下),文件名如果带有中文,经常会出现乱码现象,需要进行编码。(推荐:java视频教程)String fileName = "测试文件.doc";try { HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalC...

weixin_28867991的博客 6253

文件下载中文乱码问题

最近用在做一个流程功能的文件上传下载功能时,发现部分IE浏览器上下载中文文件名文件时会出现文件名乱码的现象,使用谷歌完全没有问题,只是使用ie或以ie为内核的浏览器时会出现乱码问题,解决如下: @GetMapping("/download") public void download( HttpServletRequest request, HttpServletResponse resp...

sout_zx的博客 808

Flask下载文件,中文文件名在IE浏览器下出现乱码

1 问题描述 Python的Flask项目,做上传下载时按照原文件名进行,偶尔会出现中文文件名,当执行下载时在IE中会出现乱码问题。quote是将文件名urlencode化,然后以适应IE浏览器 2 解决方案 import os from urllib.parse import quote # from urllib import quote for python2 from flask import request, make_response, send_from_directory @ap

apollo_miracle的博客 1056

基于SSM的maven项目启动后前端文件下载时文件名出现中文乱码或者被过滤的问题的解决方法

问题描述: 下载表单文件名: 下载时显示文件名: 项目代码就不一一展示了,这里只展示关键代码,这是我获取前端带中文的参数后在service做的文件下载处理,下载代码是没有问题的 @Override public ResponseEntity<byte[]> downloadFile(HttpServletRequest request, String f...

qq_38763540的博客 639
上一篇: 安装opencms ,MySQL 'max_allowed_packet'....
下一篇: version 1.4.2_03 of the jvm is not suitable for this product. 1.5 or greater is
programloverjack
博客等级 码龄17年 5粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值