无法下载希腊文名称的文件

时间:2018-09-25 12:01:32

标签: python python-3.x

每次我尝试使用以下方式下载文件:

return static_file( filename, root=filepath, download=True )

Python错误说:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-33: ordinal not in range(128)

尽管Myy系统仅适用于LANG=el_GR.utf-8

我如何才能正确下载带有希腊名称的文件?

2 个答案:

答案 0 :(得分:0)

在使用文件名之前,您是否尝试过单独编码?我经常发现,当我尝试在函数中添加“ .encode(” utf-8“)”时,也会出现错误,但是,当我首先对变量进行编码时,它会起作用。

filename = filename.encode("utf-8")
return pdata, static_file( filename, root=filepath, download=True )

否则,您也可以尝试将其添加到代码顶部:

# coding=utf-8

也请查看此链接Unicode Types 它显示了python中Unicode的用法。

答案 1 :(得分:0)

实际上,我决定使用一种中间件,即“ download.html”模板:

return template( 'download.html', authuser=authuser, filename=filename )

并使用“元等效”提供文件,如下所示:

<meta http-equiv="REFRESH" content="5;URL=http://superhost.gr/static/files/{{ filename }}">

似乎希腊文文件名没有从wsgi应用正确传递到html模板,因为我在引用“ filename”变量时收到此错误。

The requested URL /static/files/ΒιογÃÂαÆικÃÂŒ - ÃŽÂίκοÂ.docx was not found on this server.

那是为什么?