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

2023-01-15 07:02:17   第一文档网     [ 字体: ] [ 阅读: ] [ 文档下载 ]
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。下载word有问题请添加QQ:admin处理,感谢您的支持与谅解。点击这里给我发消息

#第一文档网# 导语】以下是®第一文档网的小编为您整理的《不同浏览器上中文文件名的下载乱码问题》,欢迎阅读!
乱码,文件名,中文,浏览器,不同

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

2011-09-09 16:43

浏览器能正确识别的编码格式,只要按照这样的编码来设置对应的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浏览器,采用Base64filename*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 )


本文来源:https://www.dywdw.cn/d5ceb9283169a4517723a390.html

相关推荐
推荐阅读