每次我尝试使用以下方式下载文件:
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
。
我如何才能正确下载带有希腊名称的文件?
答案 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.
那是为什么?