Юникод в Content-Disposition в области Post-IE11
Согласно этому старому ответу вам нужно закодировать имя файла в юникоде следующим образом:
from urllib.parse import quote
disposition = 'attachment' if as_attachment else 'inline'
try:
filename.encode('ascii')
file_expr = 'filename="{}"'.format(filename)
except UnicodeEncodeError:
file_expr = "filename*=utf-8''{}".format(quote(filename))
response.headers['Content-Disposition'] = '{}; {}'.format(disposition, file_expr)
Просто для развлечения я попробовал следующее:
response = HttpResponse('abcd')
response['Content-Disposition'] = b'attachment; filename="{}"'.format('üöä & €.txt'.encode('utf8'))
return response
А Chrome, Firefox и Epiphany (WebKit) смогли загрузить файл на üöä & €.txt.
Какие (не устаревшие) http-клиенты имеют проблемы с этим простым именем файла в кодировке utf-8?