小编Gre*_*ant的帖子

当发送带有 UTF-8 字符的附件时,Flask 会引发 UnicodeEncodeError (latin-1)

我正在通过 Flask 创建一个文件服务器。当我测试下载功能时,我发现如果我尝试下载以 UTF-8 字符命名的文件,则会引发 UnicodeEncodeError。

在 处创建一个文件upload/1512026299/%E6%97%A0%E6%A0%87%E9%A2%98.png,然后运行以下代码:

@app.route('/getfile/<timestamp>/<filename>')
def download(timestamp, filename):
    dirpath = os.path.join(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'upload'), timestamp)
    return send_from_directory(dirpath, filename, as_attachment=True)
Run Code Online (Sandbox Code Playgroud)

你会得到一个异常,它应该是这样的:

127.0.0.1 - - [30/Nov/2017 21:39:05] "GET /getfile/1512026299/%E6%97%A0%E6%A0%87%E9%A2%98.png HTTP/1.1" 200 -
Error on request:
Traceback (most recent call last):
  File "C:\Program Files\Python36\lib\site-packages\werkzeug\serving.py", line 209, in run_wsgi
    execute(self.server.app)
  File "C:\Program Files\Python36\lib\site-packages\werkzeug\serving.py", line 200, in execute
    write(data)
  File "C:\Program Files\Python36\lib\site-packages\werkzeug\serving.py", line 168, in write
    self.send_header(key, value)
  File "C:\Program Files\Python36\lib\http\server.py", line 508, in send_header
    ("%s: %s\r\n" % (keyword, value)).encode('latin-1', 'strict')) …
Run Code Online (Sandbox Code Playgroud)

python utf-8 flask

2
推荐指数
1
解决办法
2655
查看次数

标签 统计

flask ×1

python ×1

utf-8 ×1