1. 程式人生 > >xadmin後臺匯出時gunicorn報錯ascii

xadmin後臺匯出時gunicorn報錯ascii

  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",親測好像沒有效果。不得不說,編碼是個神坑~