Django 从数据库获取非 ASCII 字符的文件名
我正在尝试在Django中动态创建一个文件:
response = HttpResponse(mimetype='text/txt')
response['Content-Disposition'] = 'attachment; filename=%s' % filename # UnicodeEncodeError
response.write('text')
return response
如果我把文件名写死(也就是直接写上去),它可以正常工作。但是如果我试着用数据库里的数据来创建文件名,而这些数据里有一些非ASCII字符(比如ó),我就会遇到一个叫做UnicodeEncodeError的错误。请问我该怎么用数据库里的文件名而不出现这个错误呢?
2 个回答
3
你可以在Django这边解决这个问题,但不能保证在所有浏览器上都能正常工作。
可以查看这个测试案例:http://greenbytes.de/tech/tc2231/。
想了解更多细节,可以看看这个问题,里面有个代码片段可以处理大部分情况。
4
from django.utils.encoding import smart_str
...
response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。