我有一个django应用程序,使用nginx和gunicorn托管。
我拥有的功能之一是使用xhtml2pdf即时生成PDF。
我可以通过/ pdf /(id)/等网址访问pdf,但是我遇到的问题是文件名。
导致该问题的代码段是:
# generate the pdf. This function has been tested and is not causing the problem
pdf = render_to_pdf(template, data)
if pdf:
response = HttpResponse(pdf, content_type='application/pdf')
filename = "cotización_%s.pdf" % (doc_name)
content = "inline; filename='%s'" % (filename)
response['Content-Disposition'] = content
return response
从错误日志中,我意识到问题出在文件名(cotización)的重音上
File "~/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 182, in handle_request
resp.write(item)
File "~/lib/python3.6/site-packages/gunicorn/http/wsgi.py", line 333, in write
self.send_headers()
File "~/lib/python3.6/site-packages/gunicorn/http/wsgi.py", line 329, in send_headers
util.write(self.sock, util.to_bytestring(header_str, "ascii"))
File "~/lib/python3.6/site-packages/gunicorn/util.py", line 507, in to_bytestring
return value.encode(encoding)
UnicodeEncodeError: 'ascii' codec can't encode character '\xf3' in position 176: ordinal not in range(128)
在我的本地主机上,我可以完美地访问pdf。但是在我的服务器上,我收到502错误。如果我删除“ó”,问题就解决了。
所以我的问题是,我如何提供包含文件名上的重音符号的pdf文件?
注意:口音不在URL上,仅在文件名上。