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

相關文章
相關標籤/搜索