python - 如何为 HTTP header 编码 UTF8 文件名? (Python,Django)

标签 python django http http-headers escaping

我对 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/

相关文章:

python - pymongo==3.0.3 : ImportError: No module named connection

python - MXNET 与 Theano 体验

python - 我的 "urls.py"文件在我的 Django 项目中放在哪里?

java - Dart 将 JSON 解析成表

java - HttpClient 参数未添加到执行方法中

python - pycairo "ImportError: DLL load failed: The specified module could not be found."即使在安装 DLL 之后

python - 在 Mac OS X 上的 IDE 中设置 Python 3 的路径

python - Django 未创建表 "Table django_session does not exist"

django - 一个项目,多个客户使用 git?

http - 深入学习http协议(protocol)的好资源