【发布时间】:2010-11-24 14:23:08
【问题描述】:
我对 HTTP 标头有疑问,它们是用 ASCII 编码的,我想提供一个视图来下载名称可以是非 ASCII 的文件。
response['Content-Disposition'] = 'attachment; filename="%s"' % (vo.filename.encode("ASCII","replace"), )
我不想使用静态文件来解决非 ASCII 文件名的相同问题,但在这种情况下,文件系统和文件名编码会出现问题。 (我不知道目标操作系统。)
我已经尝试过 urllib.quote(),但是它引发了 KeyError 异常。
可能我做错了什么,但也许这是不可能的。
【问题讨论】:
-
我意识到我迟到了几年,但是...... KeyError 异常真的让我很烦恼。我的意思不仅仅是“每隔一段时间我都会遇到这个问题”,我是说,我在几年前向 Python 提交了一个补丁来修复,争论了一段时间,然后决定他们不想更改 Python 2。我确实在 Python 3 中解决了这个问题,但他们从未接受我在 Python 2 中的补丁。解决方法是先使用 .encode('utf-8'),然后使用 urllib.quote。但这是针对 URL 编码的,这不是将这些放在标头中的标准方式。
标签: python django http http-headers escaping