Имя файла Django из базы данных с не-ascii символами - PullRequest
3 голосов
/ 04 декабря 2009

Я пытаюсь динамически создать файл в Django:

response = HttpResponse(mimetype='text/txt')
response['Content-Disposition'] = 'attachment; filename=%s' % filename # UnicodeEncodeError

response.write('text')

return response

Если я жестко закодировал имя файла, оно работает должным образом, но если я пытаюсь создать имя файла из данных БД, которые содержат символы не ascii (например, -), я получаю исключение UnicodeEncodeError. Как я могу использовать имя файла БД без исключения?

Ответы [ 2 ]

5 голосов
/ 04 декабря 2009
from django.utils.encoding import smart_str
...

 response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
3 голосов
/ 04 декабря 2009

Вы можете исправить проблему на стороне Django, но нет гарантии, что она будет работать во всех браузерах.

См. Тестовые случаи на http://greenbytes.de/tech/tc2231/.

Подробнее об этом см. этот вопрос , который ссылается на фрагмент для обработки большинства случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...