一尘不染

如何为HTTP标头编码UTF8文件名?(Python,Django)

django

我的HTTP标头存在问题,它们以ASCII编码,我想提供一个下载名称可以为非ASCII的文件的视图。

response['Content-Disposition'] = 'attachment; filename="%s"' % (vo.filename.encode("ASCII","replace"), )

我不想使用非ASCII文件名来解决同一问题的静态文件,但是在这种情况下,文件系统及其文件名编码会出现问题。(我不知道目标操作系统。)

我已经尝试过urllib.quote(),但它引发KeyError异常。

可能我在做错事,但这也许是不可能的。


阅读 323

收藏
2020-03-27

共1个答案

一尘不染

这是一个常见问题解答。

没有可互操作的方式来执行此操作。一些浏览器实现专有扩展(IE,Chrome),另一些实现RFC 2231(Firefox,Opera)。

请参阅http://greenbytes.de/tech/tc2231/上的测试用例。

当前所有台式机浏览器均支持RFC 6266和RFC 5987(Safari> = 6,IE> = 9,Chrome,Firefox,Opera,Konqueror)中定义的编码。

2020-03-27