5 回答

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

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

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

TA貢獻2003條經(jīng)驗 獲得超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
但沒有顯示我安裝的應用程序的數(shù)據(jù)

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