打包下载文件 中文文件名乱码问题的解决
2013-01-09 14:48
746 查看
很多网站提供多个附件打包下载的功能,而下载解压后中文文件名有乱码的问题。
问题的原因如下:
windows中文系统默认采用GBK编码,中文文件名在本地保存时是gbk的,当上传到网站上时,
如果网站编码是utf8的,那么本地浏览器会将文件名转码处理,再上传。
而在在打包下载时,网站会把utf8编码的文件名文件统一打包,这样用户用 RAR再打开后就乱码了。
解决方法:
打包下载时,网站获取用户请求的HTTP头中的acceept-charset accept-language ,
如果字符集中含有 GBK ,并且语言是 zh cn的这种情况,可以在后台打包时,将utf8的
文件名转码为gbk,再压缩打包。这样下载就是ok的。
最初的解决方法,考虑将gbk的中文用 uri方式编码,然后下载时再将uri编码解码,
但发现这个方法不可行,因为js是不能直接访问本地文件的,而浏览器选择了上传文件后,
已经是utf8编码了,再uri编码是徒劳的。
问题的原因如下:
windows中文系统默认采用GBK编码,中文文件名在本地保存时是gbk的,当上传到网站上时,
如果网站编码是utf8的,那么本地浏览器会将文件名转码处理,再上传。
而在在打包下载时,网站会把utf8编码的文件名文件统一打包,这样用户用 RAR再打开后就乱码了。
解决方法:
打包下载时,网站获取用户请求的HTTP头中的acceept-charset accept-language ,
如果字符集中含有 GBK ,并且语言是 zh cn的这种情况,可以在后台打包时,将utf8的
文件名转码为gbk,再压缩打包。这样下载就是ok的。
最初的解决方法,考虑将gbk的中文用 uri方式编码,然后下载时再将uri编码解码,
但发现这个方法不可行,因为js是不能直接访问本地文件的,而浏览器选择了上传文件后,
已经是utf8编码了,再uri编码是徒劳的。
相关文章推荐
- 解决从数据库下载文件时,中文文件名为乱码的问题!
- 解决PHP在IE浏览器下载文件,中文文件名乱码问题
- Struts2 .apk 文件下载及解决中文文件名乱码问题(转)
- 解决PHP在IE中下载文件,中文文件名乱码问题
- 文件下载(解决中文文件名下载乱码问题) 收集
- c# web 下载文件(解决中文文件名乱码问题)
- 如何解决ASP.NET下载时的中文文件名乱码,与TXT文件中存在代码两个问题
- 实现文件下载与中文文件名乱码问题解决
- iOS 文件下载 (AFNetwork 三方框架 文件名中文字符乱码问题解决)四
- php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
- 文件下载与中文文件名乱码问题解决
- IE浏览器下载文件中文文件名乱码问题解决
- jsp实现文件下载与中文文件名乱码问题解决
- jsp实现文件下载与中文文件名乱码问题解决
- 解决PHP在IE浏览旗下载文件,中文文件名乱码问题
- java文件下载的中文文件名乱码问题的解决
- 使用Content-Disposition: attachment; filename=FILENAME,在Firefox浏览器中下载文件,文件名中文乱码问题解决。
- jsp实现文件下载与中文文件名乱码问题解决
- 下载文件默认文件名中文乱码问题的解决
- 文件下载 response.setHeader()下载中文文件名乱码问题 解决办法