醉了,文件名字乱码,虽然下载成功了,但是文件名字是乱码。 自己用C写的CGI,成功获取了前端上传的文件,可是,如果文件名字是中文,就会出现下面这种情况:
-
2020-01-06 14:55:56
浏览器能正确识别的编码格式,只要按照这样的编码来设置对应的Content-Disposition,那么应该就不会出现中文文件名的乱码问题了。
首先,文件名作为参数保存Content-Disposition里也就是header头里,content-type指定的是响应文件在浏览器显示的编码,header头里的编码没法指定,浏览器不同,Content-Disposition值可以有以下几种编码格式 。-
直接urlencode:
Content-Disposition: attachment; filename="%e7%be%8e%e5%a5%bd%e5%ae%b6.chm"
-
Base64编码:
Content-Disposition: attachment; filename="=?UTF8?B?c3RydXRzMi4w5Lit5paH5pWZ56iLLmNobQ==?="
-
RFC2231规定的标准:
Content-Disposition: attachment; filename*=UTF-8’’%E5%9B%9E%E6%89%A7.msg
-
直接ISO编码的文件名:
Content-Disposition: attachment;filename=“测试.txt”
然后,各浏览器支持的对应编码格式为:
- IE浏览器,采用URLEncoder编码
- Opera浏览器,采用filename*方式
- Safari浏览器,采用ISO编码的中文输出
- Chrome浏览器,采用Base64编码或ISO编码的中文输出
- FireFox浏览器,采用Base64或filename*或ISO编码的中文输出
直接在下载链接的header头中加入
更多相关内容 -
-
问题:下载的文件,文件名字是乱码。
2019-03-20 20:54:00醉了,文件名字乱码,虽然下载成功了,但是文件名字是乱码。 自己用C写的CGI,成功获取了前端上传的文件,可是,如果文件名字是中文,就会出现下面这种情况: 转载于:...转载于:https://www.cnblogs.com/the-one/p/10567611.html
-
解决IE及其他浏览器下载文件标题中文乱码问题
2020-11-13 16:38:24解决IE及其他浏览器下载文件标题中文乱码问题 近期些项目遇到下载文件中文名称乱码问题,在网上看了一些博客,总结出以下内容,废话不说,直接上代码。 //首先给一个生成文件的路径 String filePath = "C:\Users\...解决IE及其他浏览器下载文件标题中文乱码问题
近期些项目遇到下载文件中文名称乱码问题,在网上看了一些博客,总结出以下内容,废话不说,直接上代码。
//首先给一个生成文件的路径 String filePath = "C:\Users\admin\Desktop\pdf"; //判断文件夹存不存在,不存在则创建 File wjjfile = new File(filePath); if (!wjjfile.exists()) { wjjfile.mkdirs(); } //生成一个随机数作为生成文件名 String code = String.valueOf(new Random().nextInt(899999) + 100000); String fileName = code+".pdf"; String clientFileName = "202x年度xxx花名册.pdf"; //创建pdf 使用itext技术手动画PDF,这一步网上有很多例子 if(BysjymcPDFUtil.createPDF(filePath+fileName, data)){ //打印日志 } //判断文件存不存在 File file=new File(filePath,fileName); if(!file.isFile()){ throw new FileNotFoundException(""); } BufferedInputStream bis= new BufferedInputStream(new FileInputStream(file)); BufferedOutputStream bos = null; response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); if (request.getScheme() == "https" || request.getScheme() == "http") { response.setHeader("Content-Transfer-Encoding", "binary"); response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0"); response.setHeader("Pragma", "public"); } long fileLength = file.length(); response.setContentType("application/x-msdownload;"); String browser = ""; try { browser = request.getHeader("User-Agent"); if (browser.indexOf("MSIE 6.0") > -1 || browser.indexOf("MSIE 7.0") > -1 ) { // IE6, IE7 浏览器 response.addHeader("content-disposition", "attachment;filename="+ new String(clientFileName.getBytes(), "ISO8859-1")); } else if (browser.indexOf("MSIE 8.0") > -1) { // IE8 response.addHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(clientFileName, "UTF-8")); } else if (browser.indexOf("MSIE 9.0") > -1) { // IE9 response.addHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(clientFileName, "UTF-8")); } else if (browser.indexOf("MSIE 10") > 0) { // IE10 response.addHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(clientFileName, "UTF-8")); } //null != agent && -1 != agent.indexOf("like Gecko") else if (browser.indexOf("Gecko") > 0 && browser.indexOf("rv:11") > 0) { // IE11 response.addHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(clientFileName, "UTF-8")); } else if (browser.indexOf("Chrome") > -1) { // 谷歌 response.addHeader("content-disposition","attachment;filename*=UTF-8''" + URLEncoder.encode(clientFileName, "UTF-8")); } else if (browser.indexOf("Safari") > -1) { // 苹果 response.addHeader("content-disposition", "attachment;filename="+ new String(clientFileName.getBytes(), "ISO8859-1")); } else { // 火狐或者其他的浏览器 response.addHeader("content-disposition","attachment;filename*=UTF-8''" + URLEncoder.encode(clientFileName, "UTF-8")); } } catch (Exception e) { e.printStackTrace(); } response.setHeader("Content-Length", String.valueOf(fileLength)); bis = new BufferedInputStream(new FileInputStream(file)); bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if (bos != null) { try { bos.close(); } catch (IOException e) { e.printStackTrace(); } }
声明:希望对类似问题的解决有效,转载请附上原文出处链接和本声明。
-
PHP附件下载中文名称乱码的解决方法
2020-12-19 18:29:24PHP中,如果要下载的文件名称为中文,则会出现文件标题乱码。 此时就需要对标题进行编码,也就是说先进性urlencode,然后再放入header,然后问题就解决了。 $filename = urlencode("下载文档"); header ( "Content-... -
php做下载文件的实现代码及文件名中乱码解决方法
2020-12-18 10:13:12最近有人问我做下载文件的方法,对于php方法如下:... 第二行代码是给下载的内容指定一个名字; 第三行代码是把下载的内容读进文件中。 如何在PHP下载文件名中解决乱码 通过把Content-Type设置为application/octet-stre -
下载文件时文件名乱码问题
2021-07-30 20:06:26package com.lhh.downloadTool; import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; /** ... * @Date:2021/7/30 0030-17:37 ...public cla.package com.lhh.downloadTool; import sun.misc.BASE64Encoder; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; /** * @Auther:luhh * @Date:2021/7/30 0030-17:37 * @Description:com.lhh.downloadUtile * @Version:1.0 */ public class DownloadTool { public static String getFileName(String agent, String filename) throws UnsupportedEncodingException { if (agent.contains("MSIE")) { // IE filename = URLEncoder.encode(filename, "utf-8"); filename = filename.replace("+", " "); } else if (agent.contains("Firefox")) { // Firefox BASE64Encoder base64Encoder = new BASE64Encoder(); filename = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?="; } else { // 其它浏览器 filename = URLEncoder.encode(filename, "utf-8"); } return filename; } }
-
Java实现文件下载并解决中文文件名乱码
2014-09-26 13:11:10Java实现文件下载并解决中文文件名乱码 -
web开发时在浏览器上下载文件中文名字乱码问题
2017-11-09 19:53:35一直以来,编译器跟浏览器的中文编码问题都让我很头疼,今天我就做了一下总结,今后web开发下载文件的时候就不用担心乱码的问题了。 浏览器可以自己识别编码,是因为与Content-Disposition相互对应,如果一致就不会... -
.net从服务器下载文件中文名乱码解决方案
2020-09-03 10:43:52主要给大家介绍.net中从服务器下载文件中文名乱码的解决方案,有需要的朋友可以参考下 -
详细解决java文件下载文件名乱码问题
2021-02-28 12:02:09需要它的朋友可以关注以下内容下载下来的文件名乱码,让我们一起学习和学习下载JAVA文件时有两种情况下出现乱码:1下载下来的文件名乱码,下载时中文文件名乱码2,由于该路径在下载过程中包含中文文件名... -
手机端下载文件的文件名为乱码?
2021-04-09 12:46:40最近用手机端测试数据的时候,发现用手机端下载文件的文件名是乱码,我查看了SystemNoticeManager.java的源码之后发现他们对文件名的定义的之前的写法是:String finalFileName=URLEncoder.encode(filename.... -
Java 文件下载,文件名乱码问题解决。
2022-06-30 11:38:32JAVA文件下载时乱码有两种情况:例如: 变为 如果还是乱码,参考下面的代码 2、url包含中文乱码,提示找不到文件 修改tomcat下的conf/server.xml文件,添加一个属性:URIEncoding,将该属性值设置为UTF-8... -
解决php下载中文文件乱码问题
2022-07-07 10:33:29PHP Header下载文件在IE文件名中文乱码问题简介: 解决PHP Header下载文件在IE文件名中文乱码有两种常见的,一种是是把页面编码改成utf8,另一种是对中文url进入urlencode编码,根据UA检测,区别下载,就可以解决了 ... -
ie8 ie浏览器下载excel文件乱码,变成压缩包,解决方案
2021-06-07 12:01:00下载<a id="download" href="javascript:void(-1)">咨询电话接听明细模板</a>,填写后导入</div> <input type="file" name="file_upload" id="file_upload"/> </div> js代码 $("#... -
解决浏览器下载文件时中文文件名乱码的问题
2021-10-19 20:05:08解决浏览器下载文件时中文文件名乱码的问题 很多时候我们需要在后台为前端提供文件下载的功能,但是当文件名中有中文时我们不能直接将文件名返回,需要对中文的文件名进行处理后再返回。 一、文件下载controller代码... -
手机浏览器下载文件名乱码解决
2019-05-17 11:35:49手机浏览器下载文件名乱码解决 之前我是这样写的,这样做pc端下载文件名是好的没乱码,手机端下载大部分也是好的,就是苹果自带的浏览器还是乱码 pdfPath = URLEncoder.encode(fileName,"UTF-8")+".pdf"; 解决乱码... -
java下载文件,文件名乱码问题
2021-09-28 19:07:24下载文件名乱码可以参照如下代码,或者都试试 String userAgent = request.getHeader("User-Agent"); String oraFileName = meetingFile.getFileName(); String formFileName=oraFileName; // 针对IE或者以IE为... -
postman下载文件乱码
2021-03-10 10:52:40环境:postman v8.0.7 ...1.postman下载文件时乱码 解决方案: 不要用send,用边上小箭头里的send and Download 2.postman的下载文件名默认为response 解决方案:postman本身问题,放到浏览器请求没问题 ... -
解决Safari浏览器下载文件文件名称乱码的问题
2020-12-02 11:21:16解决Safari浏览器下载文件文件名称乱码的问题 -
关于java文件下载文件名出现乱码的问题的解决方法
2021-03-16 17:58:41下载JAVA文件时有两种情况下出现乱码:1,下载时中文文件名乱码2,由于该路径在下载过程中包含中文文件名乱码,因此提示找不到该文件解决方案显示在下面的代码中response.setContentType("multipart/form-data");... -
不同浏览器下载文件中文名字乱码解决(请求头中内容编码解码问题)
2019-03-22 15:09:25不同浏览器请求头内容的编码、解码方式不同,只要后台按照浏览器的编码方式来编码对应的Content-Disposition内容,浏览器按照其对应的解码方式进行解码就不会出现中文文件名的乱码问题了。 首先,文件名作为参数保存... -
浏览器下载文件时文件名中文乱码问题
2021-04-19 22:16:57问题描述: 最近做项目遇到下载附件...3.浏览器根据服务器返回的Header信息创建相应文件,此时文件名并没有出现中文乱码问题 ,到了选择附件下载位置的窗口 ,这时名称回显出现乱码 解决: 对文件名设置编码格式 至此 -
解决PHP文件下载时中文文件名乱码的问题
2021-03-23 16:46:31本节内容:php文件下载中文文件名乱码。在php编程中,通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作文件来下载。另外,还可以使用Content-Disposition设置下载的文件名。>>>... -
解决IE浏览器下载文件,文件名乱码问题(浏览器历史介绍)
2020-12-31 16:38:19解决IE浏览器下载文件,文件名乱码问题(浏览器历史介绍) -
java下载文件时文件名出现乱码的解决办法
2021-02-28 12:02:36java下载文件时文件名出现乱码的解决办法发布时间:2020-06-19 10:31:47来源:亿速云阅读:147作者:Leah这篇文章给大家分享的是有关java下载文件时文件名出现乱码的解决办法,小编觉得挺实用的,因此分享给大家学习... -
解决各大浏览器下载文件,文件名乱码的问题
2021-01-14 17:40:13使用IE8导出csv文件时文件名乱码了,查询资料后得到解决 简单来说,之前使用request获取header中的user-agent,通过MSIE关键字来判断是否是IE浏览器,如果是IE浏览器,使用utf-8对文件名编码就可以了。然而,IE11的... -
java下载文件名乱码解决方法介绍
2021-03-09 05:08:11java Web开发下载文件功能(代码如下),文件名如果带有中文,经常会出现乱码现象,需要进行编码。(推荐:java视频教程)String fileName = "测试文件.doc";try { HttpServletResponse response = (HttpServletResponse... -
gin文件下载中文乱码解决
2022-05-01 18:36:12engine := gin.Default() engine.GET("/up", func(c *gin.Context) { c.Header("Content-Type", "application/octet-stream") c.Header("Content-Disposition", fmt.Sprintf("attachment; filename*=utf-8''%s", ... -
下载excel文件名字乱码问题处理
2016-08-29 15:02:40/** 需要输出的文件路径 */ private String filePath; /** * 带模板路径的构造器 * * @param templateName * 模板路径 */ public FILEView(String filePath) { this.filePath = filePath; } public ... -
开发者日记1-文件下载文件名乱码(所有语言通用下载设置)
2022-03-08 14:53:53文件下载
收藏数
71,817
精华内容
28,726