【问题标题】:Unicode in Flask content-disposition headerFlask 内容处置标头中的 Unicode
【发布时间】:2012-11-07 03:40:58
【问题描述】:

我正在尝试将 Flask 响应对象中的 Content-Disposition 标头设置为可能包含瑞典字符 (åäö) 的文件名。我的测试代码如下所示:

response =  flask.send_file(output_file_path)
response.headers[u"Content-Disposition"] = u'filename="åäö.pdf"'

这会出现以下错误:

文件“C:\Python27\Lib\BaseHTTPServer.py”,第 401 行,在 send_header
self.wfile.write("%s: %s\r\n" % (keyword, value))
UnicodeDecodeError:“ascii”编解码器无法解码位置 10 中的字节 0xe5:序号
不在范围内(128)

我已经尝试过编码、解码和我能想到的任何事情,但我无法让 Flask 接受我想在我的标头中使用 Unicode (utf-8)!

【问题讨论】:

    标签: python http unicode flask


    【解决方案1】:

    请参阅 RFC 6266 了解内容处置和 5987 了解编码。测试用例here.

    【讨论】:

      【解决方案2】:

      在 utf-8 中发送 http 标头值存在一些问题。看看这个问题How to send non-English unicode string using HTTP header?

      【讨论】:

      • 链接提到 ISO 8859-1 没问题,因为我的角色是 ISO 8859-1,我可以用这个代替吗?
      • @monoceres 将字符串编码为“ISO 8859-1”并尝试一下。很可能它应该可以正常工作。
      • 不,ISO-8859-1 不能可靠地工作;某些 UA 默认为其他内容(UTF-8、引用页面的页面编码或系统区域设置)。
      猜你喜欢
      • 2010-10-30
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 2017-09-08
      相关资源
      最近更新 更多