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
在本地运行,而不是附加到容器上。
添加回答
举报