现在的位置: 首页 > 综合 > 正文

打包下载文件 中文文件名乱码问题的解决

2018年02月11日 ⁄ 综合 ⁄ 共 403字 ⁄ 字号 评论关闭

很多网站提供多个附件打包下载的功能,而下载解压后中文文件名有乱码的问题。
问题的原因如下:
windows中文系统默认采用GBK编码,中文文件名在本地保存时是gbk的,当上传到网站上时,
如果网站编码是utf8的,那么本地浏览器会将文件名转码处理,再上传。
而在在打包下载时,网站会把utf8编码的文件名文件统一打包,这样用户用 RAR再打开后就乱码了。

解决方法:
打包下载时,网站获取用户请求的HTTP头中的acceept-charset accept-language ,
如果字符集中含有 GBK ,并且语言是 zh cn的这种情况,可以在后台打包时,将utf8的
文件名转码为gbk,再压缩打包。这样下载就是ok的。

最初的解决方法,考虑将gbk的中文用 uri方式编码,然后下载时再将uri编码解码,
但发现这个方法不可行,因为js是不能直接访问本地文件的,而浏览器选择了上传文件后,
已经是utf8编码了,再uri编码是徒劳的。 

抱歉!评论已关闭.