当前位置: 首页 > 面试题库 >

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

缪嘉志
2023-03-14
问题内容

我的HTTP标头存在问题,它们以ASCII编码,我想提供一个下载名称可以为非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/上的测试用例。

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



 类似资料:
  • 建议选择 safe 方式命名文件名。 经测试,以下修改源码以适应 utf-8 命名方式兼容性也不好。 // 修改\inc\pageutils.php中utf8_encodeFN、utf8_decodeFN两个函数   function utf8_encodeFN($file,$safe=true){ global $conf; //if($conf['fnencode'] == '

  • 问题是无法从$HTTP响应头中获取文件名 HTTP/1.1 200 OK 内容-长度:121257 内容-类型:Application/PDF 服务器:Microsoft-HTTPAPI/2.0 访问控制-允许-起源:* 访问控制-暴露-标头:* 内容-处置:附件;filename=order-414.pdf 日期:2015年2月11日星期三05:32:25 GMT 我只想在下载时获得文件名(or

  • 问题内容: 我有一个包含一些非utf8特征的文件(例如“ ISO-8859-1”),因此我想将该文件(或读取的)转换为UTF8编码,我该怎么办? 代码是这样的: 编辑:放置一个编码示例 问题答案: 在那里,文本已解码。您可以通过simmetric Writer / OutputStream方法使用您喜欢的编码(例如UTF-8)来编写它。

  • 我有这样一个csv文件 我在读书

  • 问题内容: (但是我将其他答案之一标记为已接受,而不是我自己的答案,因为它使我半途而废,并以此来奖励自己的努力) 似乎无法通过与链接设置HTTP请求标头,而只能使用来完成。 但是,链接到的URL是应下载的文件(浏览器不应导航至其URL),而且我不确定是否可以使用AJAX来完成。 此外,返回的文件是一个二进制文件,而AJAX并非用于此目的。 如何使用添加了自定义标头的HTTP请求触发文件下载? 编辑

  • 问题内容: 我通过xmlrpc从我的一个客户那里获得的字符串有问题。他给我发送了两次编码的utf8字符串:(因此,当我在python中获取它们时,我有一个unicode对象,该对象必须再解码一次,但显然python不允许这样做。我注意到我的客户端但是我需要在修复之前先进行快速解决。 来自tcp转储的原始字符串: 它将转换为: 我们得到的最好的是: 结果是正确的字符串,它是: 但是,这很丑陋,不能在