文件下载,IE下文件名乱码【解决方案】

来源:互联网 发布:练车软件下载 编辑:程序博客网 时间:2024/04/28 10:37

场景

文件下载时,我们可能会将文件名放在Response中:

filename = unicode('你好.txt').encode('utf-8')response['Content-Disposition'] = 'attachement; filename=' + filename

这种方式,在现代浏览器比如Chrome, Firefox, Safari中,支持都挺好的。但在IE中,即使是IE.11中,都会出现乱码。

似乎,IE不支持filename中的非ASCII字符。

解决思路

不通过Response的Header中定义filename,而是通过请求url中加入utf-8文件名。

解决步骤

1. 修改URL

# 访问的URL,原来可能是这样的:GET http://www.abc.com/resource/# 现在应该是这样的:GET http://www.abc.com/resource/你好.txt

2. 修改Response的disposition

# 去掉后面的'; filename='response[Content-Disposition] = 'attachement'

这时,如果GET的返回是数据流(Stream),因为url有文件名,就会以该文件名作为保存的文件名。

0 0