xadmin後臺匯出時gunicorn報錯ascii
阿新 • • 發佈:2018-11-10
django + xadmin + nginx + gunicorn部署後,xadmin後臺匯出model資料報錯,gunicorn日誌記錄為:UnicodeEncodeError: 'ascii' codec can't encode characters in position 223-240: ordinal not in range(128)。
深刻體會到本地環境,程式碼一切ok,並不代表測試環境ok,測試環境ok,並不代表預發環境ok,預發環境ok,生產環境可能會ok!每一個環境最好不要偷懶每個功能都需要一一測一下。
報錯資訊說明是編碼問題,找到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",親測好像沒有效果。不得不說,編碼是個神坑~