我对 HTTP header 有疑问,它们是用 ASCII 编码的,我想提供一个 View 来下载名称可以是非 ASCII 的文件。
response['Content-Disposition'] = 'attachment; filename="%s"' % (vo.filename.encode("ASCII","replace"), )
我不想使用静态文件来解决非 ASCII 文件名的相同问题,但在这种情况下,文件系统和文件名编码会出现问题。 (我不知道目标操作系统。)
我已经尝试过 urllib.quote(),但是它引发了 KeyError 异常。
可能我做错了什么,但也许这是不可能的。
最佳答案
这是一个常见问题解答。
没有可互操作的方法来做到这一点。一些浏览器实现专有扩展(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)。
关于python - 如何为 HTTP header 编码 UTF8 文件名? (Python,Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1361604/