浏览器能正确识别的编码格式,只要按照这样的编码来设置对应的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编码的中文输出
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 (userAgent.indexOf("mozilla") != -1)
{
rtn = "filename*=UTF-8''" + new_filename;
}
}
目前,我测试的情况,在几个浏览器上都能正常输入中文文件名
但,也许浏览器不同版本,可能还会有乱码的情况.....
分享到:
相关推荐
解决浏览器请求响应中文文件名乱码问题的小工具包,解决中文文件名问题
解决不同浏览器下载时中文名乱码问题,针对,不同的浏览器,采用不同的编码
解决PHP下载文件名中乱码的问题
本文用 C# 代码解决了在目前四种流行浏览器中Asp.net 输出文件流时文件名的空格及中文字符乱码这两个问题。使用本文的代码,你将可以让 IE(Internet Explorer)、Opera、Firefox 及 Chrome 的用户享受到没有乱码且...
我上传的是一个servlet,里面有详细的说明,自己看看就知道怎么做了
往往开发环境和生产环境在环境部署时会遇到很多奇怪的问题,此次word文档下载就被卡住了,通过一番努力终于找到了原因,分享给大家。上传文件txt格式,内有方法详细的代码注释及原因说明,jar包比较常见,大家自行...
本文实例讲述了跨浏览器PHP下载文件名中的中文乱码问题解决方法。分享给大家供大家参考。具体如下: 复制代码 代码如下:<?php $ua = $_SERVER[“HTTP_USER_AGENT”]; $filename = “中文 文件名.txt”; $encoded_...
下载文件个别浏览器文件名乱码解决办法,需要的朋友可以参考一下
解决Jmeter5.3上传文件中文乱码问题和录制脚本中文乱码问题,替换原本的lib\ext目录下的ApacheJMeter_http.jar文件,上传文件时,需要勾选“对POST使用multipart / form-data” 和 “与浏览器兼容的头”选项,并在...
以下这段代码作用是:浏览器提交excel格式的数据和文件名到服务器上,PHP将请求转化为可下载的excel文件,并要求浏览器弹出文件下载提示窗口
java导出文件文件名处理
解决Jmeter5.4.1上传文件中文乱码问题和录制脚本中文乱码问题,其他版本可能不兼容会报错无法使用 使用时替换原本的lib\ext目录下的ApacheJMeter_http.jar文件并重启,上传文件时,需要勾选“对POST使用multipart / ...
ie浏览器(11)解决下载文件名 乱码 Java 工具类 util 类 下载附件的名称乱码
KindEditor是在国内比较受欢迎的HTML在线编辑器,本次更新新增单元格编辑功能,各种按钮(确定、取消、上传等按钮)在不同...BUG [ASP]不改变文件名并上传中文名文件时文件名出现乱码。BUG [IE9]添加样式时有时候报错。
# -: 解决不同浏览器下上传文件名乱码问题:仅IE,其它浏览器暂时没处理。 # -: 一些路径显示的bug,主要是 cgi.escape() 转义问题 # ?: notepad++ 下直接编译的server路径问题 """ 简介:这是一个 python
涉及修改单元格样式,已处理文件数据过大,文件名不同浏览器乱码问题,代码内附有详细解析,如果有问题请在csdn留言或者通过QQ694335719联系
1.可以直接生成XML,JSON; 2.支持spring; 3.支持文件上传,下载(中文文件名不会乱码,测试浏览器IE,firefox); 4.学习java WEB的最佳资料。 (--@copy zjc版权所有,仅供学习--)