解决PHP在IE浏览器下载文件,中文文件名乱码问题
2013-11-18 16:01
916 查看
前提:我们网站所有文件全部使用的是UTF-8 NO BOM的编码方式
1、找测试重现。360浏览器下载的呵呵,果然文件名是乱码。再请测试在ie浏览器下测试。IE9,8,7也全部是乱码。查看编码就是UTF-8.所名不是编码问题造成的。使用firefox8 测试很正常。猜想是因为ie的某些特殊的设置导致的问题。
2、以"PHP ie 下载 文件名乱码"为关键字搜索。果然,ie对中文文件名的下载文件是需要特殊处理的。
3、网上一哥们如是说:
如果$file_name是UTF-8编码的,比如文件名为测试.html; ie这时就搞些小情绪,文件名变成了乱码了
在RFC2231的定义里面, 多语言编码的Content-Disposition应该这么定义: Content-Disposition: attachment; filename*="utf8''%E6%B5%8B%E8%AF%95.html" 即: filename后面的等号之前要加 * filename的值用单引号分成三段,分别是字符集(utf8)、语言(空)和urlencode过的文件名。 所以这时应该对文件名进行url编码转换 ,使用php的urlencode很轻松就搞定了
因此,以上代码应该加上url编码转换
$file_name = urlencode($file_name);
查找代码,找到文件名的地方,判断如果是ie 就对文件名称进行urlencode.
1、找测试重现。360浏览器下载的呵呵,果然文件名是乱码。再请测试在ie浏览器下测试。IE9,8,7也全部是乱码。查看编码就是UTF-8.所名不是编码问题造成的。使用firefox8 测试很正常。猜想是因为ie的某些特殊的设置导致的问题。
2、以"PHP ie 下载 文件名乱码"为关键字搜索。果然,ie对中文文件名的下载文件是需要特殊处理的。
3、网上一哥们如是说:
如果$file_name是UTF-8编码的,比如文件名为测试.html; ie这时就搞些小情绪,文件名变成了乱码了
在RFC2231的定义里面, 多语言编码的Content-Disposition应该这么定义: Content-Disposition: attachment; filename*="utf8''%E6%B5%8B%E8%AF%95.html" 即: filename后面的等号之前要加 * filename的值用单引号分成三段,分别是字符集(utf8)、语言(空)和urlencode过的文件名。 所以这时应该对文件名进行url编码转换 ,使用php的urlencode很轻松就搞定了
因此,以上代码应该加上url编码转换
$file_name = urlencode($file_name);
查找代码,找到文件名的地方,判断如果是ie 就对文件名称进行urlencode.
相关文章推荐
- 解决PHP在IE浏览器下载文件,中文文件名乱码问题
- 解决Java下载文件,文件名包含中文在IE浏览器乱码问题
- 解决PHP在IE浏览旗下载文件,中文文件名乱码问题
- php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
- 解决PHP在IE中下载文件,中文文件名乱码问题
- IE浏览器下载文件中文文件名乱码问题解决
- php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
- c# web 下载文件(解决中文文件名乱码问题)
- [置顶] PHP解决浏览器 下载文件 中文名称乱码问题--兼容大多浏览器
- Struts2 .apk 文件下载及解决中文文件名乱码问题(转)
- 解决从数据库下载文件时,中文文件名为乱码的问题!
- 实现文件下载与中文文件名乱码问题解决
- 【整理】解决php输出文件下载时文件名含中文时出现乱码
- 【转】彻底解决Asp.net文件下载(Response.WriteFile)时文件名的中文乱码和空格异常问题
- 使用Content-Disposition: attachment; filename=FILENAME,在Firefox浏览器中下载文件,文件名中文乱码问题解决。
- 文件下载(解决中文文件名下载乱码问题) 收集
- PHP解决浏览器 下载文件 中文名称乱码问题--兼容大多浏览器
- jsp实现文件下载与中文文件名乱码问题解决
- 使用spring mvc做文件下载时ie浏览器文件名乱码和下载不了问题解决
- 文件下载与中文文件名乱码问题解决