我对 HTTP 标头有疑问,它们是用 ASCII 编码的,我想提供一个视图来下载名称可以是非 ASCII 的文件。
response['Content-Disposition'] = 'attachment; filename="%s"' % (vo.filename.encode("ASCII","replace"), )
我不想使用静态文件来解决非 ASCII 文件名的相同问题,但在这种情况下,文件系统及其文件名编码会出现问题。 (我不知道目标操作系统。)
我已经尝试过 urllib.quote(),但它引发了 KeyError 异常。
可能我做错了什么,但也许这是不可能的。
原文由 Chris Ciesielski 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个常见问题解答。
没有可互操作的方法来执行此操作。一些浏览器实现专有扩展(IE、Chrome),其他浏览器实现 RFC 2231(Firefox、Opera)。
请参阅 http://greenbytes.de/tech/tc2231/ 上的测试用例。
更新:截至 2012 年 11 月,所有当前的桌面浏览器都支持 RFC 6266 和 RFC 5987 中定义的编码(Safari >= 6、IE >= 9、Chrome、Firefox、Opera、Konqueror)。