【发布时间】:2012-03-02 09:46:36
【问题描述】:
我想用 Django 的httpresponse 方法下载一个文件。文件名有一些特殊字符,比如中文。我可以使用以下代码下载文件,但文件名显示为“%E6%B8%B8%E6%88%8F%E6%B5%8F%E8%A7%88%E5%99%A8%E6% B3%A8%E5%86%8C%E9%A1%B5%E9%9D%A2.jpg"。
谁能告诉我如何转换文件名?
response = HttpResponse(attachment.file, content_type='text/plain',mimetype='application/octet-stream')
response['Content-Disposition'] = "attachment; filename="+urlquote(filename)
return response
编辑:
在使用smart_str时又出现了一个问题,文件名在Firefox和Chrome中可以正常显示,但在IE中不能:在IE中仍然显示一些未知字符。有谁知道如何解决这个问题?
提前致谢!
---通过在IE和其他浏览器中不同使用urlquote和smart_str解决。
【问题讨论】:
-
你试过不调用 urlquote 吗?
-
可以,但是没有urlquote,会显示unicode错误
-
我认为您应该将“attachment by u”替换为...也可以尝试 force_unicode 而不是 urlquote(来自 django.utils.encoding import force_unicode)
-
我使用 smart_str,它可以工作,谢谢!!!
-
浏览器兼容性是Content-Disposition一团糟,请看stackoverflow.com/a/216777/1586797