django + xadmin + nginx + gunicorn部署後,xadmin後臺導出model數據報錯,gunicorn日誌記錄爲:UnicodeEncodeError: 'ascii' codec can't encode characters in position 223-240: ordinal not in range(128)。nginx
深入體會到本地環境,代碼一切ok,並不表明測試環境ok,測試環境ok,並不表明預發環境ok,預發環境ok,生產環境可能會ok!每個環境最好不要偷懶每一個功能都須要一一測一下。django
報錯信息說明是編碼問題,找到xadmin源碼下載文件的py文件(xadmin/plugins/export.py),具體修改以下:測試
# 227行開始註釋兩行,並修改以下 # response['Content-Disposition'] = ('attachment; filename=%s.%s' % ( # file_name, file_type)).encode('utf-8') # 修復導出時gunicorn報錯ascii from urllib.parse import quote response["Content-Disposition"] = \ "attachment; " \ "filenane=%s.%s;" \ "filename*=UTF-8''%s.%s" %( quote(file_name),file_type, quote(file_name),file_type )
網上還有中說法是在supervisor配置文件加上:environment=LANG="en_US.utf8", LC_ALL="en_US.UTF-8", LC_LANG="en_US.UTF-8",親測好像沒有效果。不得不說,編碼是個神坑~編碼