5 回答

TA貢獻1815條經驗 獲得超10個贊
一種解決方案是使用./manage.py dumpdata -o data.json
而不是./manage.py dumpdata > data.json
.
另一個解決方案是使用Python的UTF-8模式,運行:
python?-Xutf8?./manage.py?dumpdata?>?data.json

TA貢獻1829條經驗 獲得超7個贊
為了json
在 django 中保存數據,使用了TextIOWrapper :
默認編碼現在是
locale.getpreferredencoding(False)
(...)
在功能文檔中locale.getpreferredencoding
我們可以讀到:
根據用戶偏好返回用于文本數據的編碼。用戶首選項在不同系統上的表達方式不同,并且在某些系統上可能無法以編程方式使用,因此此函數僅返回猜測值。
“hacky”但覆蓋這些設置的工作方法:
settings.py
在django 項目的文件中添加以下行:
import?_locale _locale._getdefaultlocale?=?(lambda?*args:?['en_US',?'utf8'])

TA貢獻1898條經驗 獲得超8個贊
這是來自 djangoproject.com 的解決方案
您轉到“設置”,在“語言”-“管理語言設置”-“更改系統區域設置”-“區域設置”中,有一個“使用 Unicode UTF-8 進行全球語言支持”框。如果我們應用它并重新啟動,那么我們就會從 Python 獲得一個合理的、現代的默認編碼。
設置框看起來像這樣。啟用檢查并重新啟動系統

TA貢獻2003條經驗 獲得超2個贊
在Windows上我解決我的問題的方法是添加到你的設置
import _locale _locale._getdefaultlocale = (lambda *args: ['en_US', 'utf8'])
僅在 Windows 上的 shell 上運行
python -Xutf8 manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json
我實際上這樣做了它有效
python -Xutf8 manage.py dumpdata -o data.json
但沒有顯示我安裝的應用程序的數據

TA貢獻1946條經驗 獲得超3個贊
如果您有多個 Python 環境,那么在應用解決方法之前,值得檢查您的問題是否python manage.py
針對正確的環境。在我的例子中,我遇到了同樣的錯誤:數據庫是在 Linux 上的容器化環境下創建的,具有較高的 Python 版本,但 Django 和其他包也存在于 Windows 上的舊本地環境中。此外,項目目錄作為卷附加到容器,并且內容在本地和容器中是相同的。所以,我只是混合并manage.py
在本地運行,而不是附加到容器上。
添加回答
舉報